À Maven, à quoi fait-il project.build.directoryréférence? Je suis un peu confus, fait-il référence au répertoire du code source ou au répertoire cible dans le projet Maven?
À Maven, à quoi fait-il project.build.directoryréférence? Je suis un peu confus, fait-il référence au répertoire du code source ou au répertoire cible dans le projet Maven?
Réponses:
Vous pouvez trouver ces propriétés maven dans le super pom.
Vous trouvez le pot ici:
${M2_HOME}/lib/maven-model-builder-3.0.3.jar
Ouvrez le bocal avec 7-zip ou un autre archiveur (ou utilisez l'outil jar).
Aller vers
org/apache/maven/model
Vous y trouverez le fichier pom-4.0.0.xml.
Il contient tous ces "raccourcis":
<project>
...
<build>
<directory>${project.basedir}/target</directory>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<finalName>${project.artifactId}-${project.version}</finalName>
<testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
...
</build>
...
</project>
Après quelques pressions, j'ajoute un lien vers lepom-4.0.0.xml . Cela vous permet de voir les propriétés sans ouvrir le fichier jar local.
project.build.directorypar exemple. C'est ce que je voulais montrer.
Il pointe vers votre répertoire de sortie de niveau supérieur (qui est par défaut target):
EDIT: Comme cela a été souligné, Codehaus est maintenant malheureusement disparu. Vous pouvez trouver des détails sur ces propriétés de Sonatype ici:
Si vous essayez de référencer des répertoires de sortie dans Maven, vous ne devez jamais utiliser une valeur littérale telle que target / classes . Au lieu de cela, vous devez utiliser des références de propriété pour faire référence à ces répertoires.
project.build.sourceDirectory project.build.scriptSourceDirectory project.build.testSourceDirectory project.build.outputDirectory project.build.testOutputDirectory project.build.directory
sourceDirectory,scriptSourceDirectoryettestSourceDirectorypermettent d'accéder aux répertoires source du projet.outputDirectoryettestOutputDirectoryfournissez l'accès aux répertoires où Maven va mettre le bytecode ou autre sortie de construction.directoryfait référence au répertoire qui contient tous ces répertoires de sortie.
project.base.dirpointe vers le répertoire racine du projet où se trouve le pom.xml. C'est pourquoi après cela, project.build.directorydéfini par Maven est ${project.basedir}/target. Merci les gars, je ne savais pas ça.
${project.build.sourceDirectory}pointe project-A/src/main/java, ${project.build.scriptSourceDirectory}pointe vers project-A/src/main/scripts, ${project.build.testSourceDirectory}pointe vers project-A/src/test/java, ${project.build.directory}pointe vers project-A/target, ${project.build.directory}pointe vers project-A/target/classes, ${project.build.testOutputDirectory}pointe vers project-A/target/test-classes.
Vous pouvez trouver la réponse la plus à jour pour la valeur de votre projet, exécutez simplement le
mvn3 help:effective-pom
et trouvez la <build> ... <directory>valeur de la balise dans le résultat aka dans le fichier effective-pom. Il affichera la valeur du Super POM sauf si vous l'avez écrasé.