In Maven, a cosa si project.build.directory
riferisce? Sono un po 'confuso, fa riferimento alla directory del codice sorgente o alla directory di destinazione nel progetto Maven?
In Maven, a cosa si project.build.directory
riferisce? Sono un po 'confuso, fa riferimento alla directory del codice sorgente o alla directory di destinazione nel progetto Maven?
Risposte:
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>
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.
project.build.directory
per esempio. Questo è quello che volevo mostrare.
Punta alla directory di output di livello superiore (che per impostazione predefinita è target
):
EDIT: Come è stato sottolineato, Codehaus è ora tristemente defunto. Puoi trovare i dettagli di queste proprietà da Sonatype qui:
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
,scriptSourceDirectory
etestSourceDirectory
fornire accesso alle directory di origine per il progetto.outputDirectory
etestOutputDirectory
fornire accesso alle directory in cui Maven inserirà bytecode o altri output di compilazione.directory
si riferisce alla directory che contiene tutte queste directory di output.
project.base.dir
punta alla directory principale del progetto in cui si trova pom.xml. Ecco perché dopo, project.build.directory
definito da Maven è ${project.basedir}/target
. Grazie ragazzi, non lo sapevo.
${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
.
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.