Maven project.build.directory

172

Worauf bezieht sich das in Maven project.build.directory? Ich bin etwas verwirrt. Verweist es auf das Quellcodeverzeichnis oder das Zielverzeichnis im Maven-Projekt?

faisal abdulai
quelle

Antworten:

224

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>

Aktualisieren

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.

maba
quelle
Ich würde eine Online-Referenz anstelle einer Datei vorschlagen, die in jar archiviert ist. Dies: maven.apache.org/ref/3.0.3/maven-model/maven.html
khmarbaise
18
@khmarbaise Nun, das ist auch schön, aber es zeigt dir nicht den Standardwert von project.build.directoryzum Beispiel. Das wollte ich zeigen.
Maba
Der Github-Spiegel ermöglicht die Verknüpfung mit einer bestimmten Zeilennummer: github.com/apache/maven-3/blob/trunk/maven-model-builder/src/… Andernfalls befindet er sich in svn unter: svn.apache.org/repos/asf / maven / maven-3 / trunk /…
Martin Ellis
@MartinEllis OK, ich habe meine Antwort auch mit einem Link aktualisiert. Danke dir!
Maba
Ich habe die Quelle des Maven Repo unter github.com/apache/maven gesucht . Eine relativ geringe Anzahl von Treffern (9). Nichts legt diese Eigenschaft direkt fest. Es muss irgendwo eingestellt werden! Diese URL zeigt die Suchergebnisse, die ich gesehen habe: github.com/apache/maven/…
PatS
44

Es zeigt auf Ihr Ausgabeverzeichnis der obersten Ebene (standardmäßig target):

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

EDIT: Wie bereits erwähnt, ist Codehaus jetzt leider nicht mehr vorhanden. Details zu diesen Eigenschaften von Sonatype finden Sie hier:

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

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, scriptSourceDirectoryUnd testSourceDirectoryfür das Projekt Zugriff auf die Quellverzeichnisse bieten. outputDirectoryund testOutputDirectoryZugriff auf die Verzeichnisse gewähren, in denen Maven Bytecode oder andere Build-Ausgaben ablegen wird. directorybezieht sich auf das Verzeichnis, das alle diese Ausgabeverzeichnisse enthält.

sdouglass
quelle
1
Das Hosting von codehause.org wurde beendet und dieser Link funktioniert nicht mehr.
Bartosz Firyn
Ja, wahr und traurig. Ich habe mit einem funktionierenden Link aktualisiert und den entsprechenden Abschnitt der verlinkten Seite zitiert.
Sdouglass
7
... project.base.dirverweist also auf das Stammverzeichnis des Projekts, in dem sich die Datei pom.xml befindet. Deshalb wird danach project.build.directoryvon Maven definiert ${project.basedir}/target. Danke Jungs, das wusste ich nicht.
Evaldeslacasa
1
Scheint zwar wahr zu sein, aber wie haben Sie diese Info erhalten: "project.base.dir zeigt auf das Stammverzeichnis des Projekts, in dem sich die pom.xml befindet". Wo kann ich diese Definition sehen?
Qartal
2
Angenommen, Ihr Projekt heißt Projekt-A, und unter Projekt-A wird eine pom.xml deklariert, die dann ${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.
sc30
4

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.

Verhás István
quelle