À Maven, à quoi fait-il project.build.directory
ré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.directory
ré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.directory
par 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
,scriptSourceDirectory
ettestSourceDirectory
permettent d'accéder aux répertoires source du projet.outputDirectory
ettestOutputDirectory
fournissez l'accès aux répertoires où Maven va mettre le bytecode ou autre sortie de construction.directory
fait référence au répertoire qui contient tous ces répertoires de sortie.
project.base.dir
pointe vers le répertoire racine du projet où se trouve le pom.xml. C'est pourquoi après cela, project.build.directory
dé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é.