Maven project.build.directory


172

In Maven, a cosa si project.build.directoryriferisce? Sono un po 'confuso, fa riferimento alla directory del codice sorgente o alla directory di destinazione nel progetto Maven?

Risposte:


224

Puoi trovare quelle proprietà del forno nel super pom.

Puoi trovare il barattolo qui:

${M2_HOME}/lib/maven-model-builder-3.0.3.jar

Apri il vaso con 7-zip o qualche altro archiviatore (o usa lo strumento vaso).

Navigare verso

org/apache/maven/model

Lì troverai il pom-4.0.0.xml.

Contiene tutte quelle "scorciatoie":

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

Aggiornare

Dopo alcune attività di lobbying, sto aggiungendo un link alpom-4.0.0.xml . Ciò consente di visualizzare le proprietà senza aprire il file jar locale.


Vorrei suggerire un riferimento online invece del file che è archiviato in jar. Questo: maven.apache.org/ref/3.0.3/maven-model/maven.html
khmarbaise

18
@khmarbaise Bene, anche questo è bello, ma non mostra il valore predefinito di project.build.directoryper esempio. Questo è quello che volevo mostrare.
maba,

Il mirror github consente il collegamento a un numero di riga specifico: github.com/apache/maven-3/blob/trunk/maven-model-builder/src/… Altrimenti, è in svn all'indirizzo: svn.apache.org/repos/asf / maven / maven-3 / trunk / ...
Martin Ellis,

@MartinEllis OK, ho aggiornato anche la mia risposta con un link. Grazie!
maba,

Ho cercato la fonte del repo di Maven su github.com/apache/maven . Un numero relativamente basso di risultati (9). Nulla imposta direttamente quella proprietà. Deve essere impostato da qualche parte! Questo URL mostra i risultati della ricerca che ho visto: github.com/apache/maven/…
PatS

44

Punta alla directory di output di livello superiore (che per impostazione predefinita è target):

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

EDIT: Come è stato sottolineato, Codehaus è ora tristemente defunto. Puoi trovare i dettagli di queste proprietà da Sonatype qui:

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

Se stai mai provando a fare riferimento a directory di output in Maven, non dovresti mai usare un valore letterale come target / classi . Invece è necessario utilizzare riferimenti di proprietà per fare riferimento a queste directory.

    project.build.sourceDirectory
    project.build.scriptSourceDirectory
    project.build.testSourceDirectory
    project.build.outputDirectory
    project.build.testOutputDirectory
    project.build.directory

sourceDirectory, scriptSourceDirectorye testSourceDirectoryfornire accesso alle directory di origine per il progetto. outputDirectorye testOutputDirectoryfornire accesso alle directory in cui Maven inserirà bytecode o altri output di compilazione. directorysi riferisce alla directory che contiene tutte queste directory di output.


1
L'hosting di codehause.org è stato chiuso e questo link non funziona più.
Bartosz Firyn,

Sì, vero e triste. Ho aggiornato con un link funzionante e citato la sezione pertinente della pagina collegata.
sdouglass,

7
... quindi project.base.dirpunta alla directory principale del progetto in cui si trova pom.xml. Ecco perché dopo, project.build.directorydefinito da Maven è ${project.basedir}/target. Grazie ragazzi, non lo sapevo.
evaldeslacasa,

1
Anche se sembra essere vero, ma come hai ottenuto queste informazioni: "project.base.dir punta alla directory principale del progetto in cui è il pom.xml". Dove posso vedere questa definizione?
qartal

2
supponiamo che il vostro progetto sia chiamato progetto-A, e sotto il progetto-A, sia dichiarato un pom.xml, quindi ${project.build.sourceDirectory}punti project-A/src/main/java, ${project.build.scriptSourceDirectory}punti a project-A/src/main/scripts, ${project.build.testSourceDirectory}punti a project-A/src/test/java, ${project.build.directory}punti a project-A/target, ${project.build.directory}punti a project-A/target/classes, ${project.build.testOutputDirectory}punti a project-A/target/test-classes.
sc30,

4

Puoi trovare la risposta più aggiornata per il valore nel tuo progetto semplicemente esegui il

mvn3 help:effective-pom

comando e trova il <build> ... <directory>valore del tag nel risultato noto anche come nell'efficace-pom. Mostrerà il valore del Super POM a meno che non sia stato sovrascritto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.