Maven project.build.directory

173

À 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?

faisal abdulai
la source

Réponses:

224

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>

Mettre à jour

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.

maba
la source
Je suggérerais une référence en ligne au lieu d'un fichier qui est archivé dans le pot. Ceci: maven.apache.org/ref/3.0.3/maven-model/maven.html
khmarbaise
18
@khmarbaise Eh bien, c'est bien aussi mais cela ne vous montre pas la valeur par défaut de project.build.directorypar exemple. C'est ce que je voulais montrer.
maba
Le miroir github permet de créer un lien vers un numéro de ligne spécifique: github.com/apache/maven-3/blob/trunk/maven-model-builder/src/… Sinon, c'est dans svn à: svn.apache.org/repos/asf / maven / maven-3 / trunk /…
Martin Ellis
@MartinEllis OK, j'ai également mis à jour ma réponse avec un lien. Je vous remercie!
maba
J'ai recherché la source du dépôt maven sur github.com/apache/maven . Un nombre relativement faible de résultats (9). Rien ne définit directement cette propriété. Il doit être placé quelque part! Cette URL montre les résultats de recherche que j'ai vus: github.com/apache/maven/…
PatS
45

Il pointe vers votre répertoire de sortie de niveau supérieur (qui est par défaut target):

https://web.archive.org/web/20150527103929/http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide

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:

http://books.sonatype.com/mvnref-book/reference/resource-filtering-sect-properties.html#resource-filtering-sect-project-properties

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, scriptSourceDirectoryet testSourceDirectorypermettent d'accéder aux répertoires source du projet. outputDirectoryet testOutputDirectoryfournissez 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.

sdouglass
la source
1
L'hébergement codehause.org est terminé et ce lien ne fonctionne plus.
Bartosz Firyn le
Oui, vrai et triste. J'ai mis à jour avec un lien de travail et cité la section pertinente de la page liée.
sdouglass
7
... donc 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.
evaldeslacasa
1
Bien que cela semble être vrai, mais comment avez-vous obtenu cette information: "project.base.dir pointe vers le répertoire racine du projet où se trouve le pom.xml". Où puis-je voir cette définition?
qartal
2
supposons que votre projet s'appelle project-A et que sous project-A, un pom.xml soit déclaré, puis ${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.
sc30
4

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é.

Verhás István
la source