Worauf bezieht sich das in Maven project.build.directory
? Ich bin etwas verwirrt. Verweist es auf das Quellcodeverzeichnis oder das Zielverzeichnis im Maven-Projekt?
Worauf bezieht sich das in Maven project.build.directory
? Ich bin etwas verwirrt. Verweist es auf das Quellcodeverzeichnis oder das Zielverzeichnis im Maven-Projekt?
Antworten:
Sie finden diese Maven-Eigenschaften im Super Pom.
Das Glas finden Sie hier:
${M2_HOME}/lib/maven-model-builder-3.0.3.jar
Öffnen Sie das Glas mit 7-zip oder einem anderen Archivierungsprogramm (oder verwenden Sie das Glaswerkzeug).
Navigieren Sie zu
org/apache/maven/model
Dort finden Sie die pom-4.0.0.xml
.
Es enthält all diese "Abkürzungen":
<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>
Nach einigem Lobbying füge ich einen Link zum hinzupom-4.0.0.xml
. Auf diese Weise können Sie die Eigenschaften anzeigen, ohne die lokale JAR-Datei zu öffnen.
project.build.directory
zum Beispiel. Das wollte ich zeigen.
Es zeigt auf Ihr Ausgabeverzeichnis der obersten Ebene (standardmäßig target
):
EDIT: Wie bereits erwähnt, ist Codehaus jetzt leider nicht mehr vorhanden. Details zu diesen Eigenschaften von Sonatype finden Sie hier:
Wenn Sie jemals versuchen, Ausgabeverzeichnisse in Maven zu referenzieren, sollten Sie niemals einen Literalwert wie target / classes verwenden . Stattdessen sollten Sie Eigenschaftsreferenzen verwenden, um auf diese Verzeichnisse zu verweisen.
project.build.sourceDirectory project.build.scriptSourceDirectory project.build.testSourceDirectory project.build.outputDirectory project.build.testOutputDirectory project.build.directory
sourceDirectory
,scriptSourceDirectory
UndtestSourceDirectory
für das Projekt Zugriff auf die Quellverzeichnisse bieten.outputDirectory
undtestOutputDirectory
Zugriff auf die Verzeichnisse gewähren, in denen Maven Bytecode oder andere Build-Ausgaben ablegen wird.directory
bezieht sich auf das Verzeichnis, das alle diese Ausgabeverzeichnisse enthält.
project.base.dir
verweist also auf das Stammverzeichnis des Projekts, in dem sich die Datei pom.xml befindet. Deshalb wird danach project.build.directory
von Maven definiert ${project.basedir}/target
. Danke Jungs, das wusste ich nicht.
${project.build.sourceDirectory}
auf project-A/src/main/java
, ${project.build.scriptSourceDirectory}
zeigt auf project-A/src/main/scripts
, ${project.build.testSourceDirectory}
zeigt auf project-A/src/test/java
, ${project.build.directory}
zeigt auf project-A/target
, ${project.build.directory}
zeigt auf project-A/target/classes
, ${project.build.testOutputDirectory}
zeigt auf project-A/target/test-classes
.
Sie können die aktuellste Antwort für den Wert in Ihrem Projekt finden. Führen Sie einfach die aus
mvn3 help:effective-pom
befehle und finde den <build> ... <directory>
Wert des Tags im Ergebnis, auch bekannt als im effektiven POM. Der Wert des Super-POM wird angezeigt, sofern Sie ihn nicht überschrieben haben.