Wo ist die Liste der vordefinierten Maven-Eigenschaften?


125

Ich weiß, dass es eine Liste aller vordefinierten Maven-Eigenschaften gibt (Sie wissen, wie project.build.sourceEncodingoder project.build.sourceDirectory). Ich habe die Liste einmal gesehen, kann sie aber nicht wiederfinden.

Antworten:


132

1
Wenn Sie pom.xml in Intellij IDEA bearbeiten, hilft dies normalerweise erheblich, indem Optionen für alles bereitgestellt werden, das wie eine Maven-Eigenschaft aussieht (z. B. ${...})
Kedar Mhaswade,

mvn help: effektiv-pom ist ein großartiges Werkzeug, um verfügbare Eigenschaften zu entdecken. maven.apache.org/plugins/maven-help-plugin/…
Peter Kahn

1
Überprüfen Sie auch diese Seite im Maven-Wiki: cwiki.apache.org/confluence/display/MAVEN/…
Guss

Enthält nicht "alles" wie, [WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.aber die meisten;)
Rogerdpack


26

Ein Blick auf das "effektive POM" wird wahrscheinlich auch helfen. Zum Beispiel, wenn Sie wissen möchten, wofür der Pfad ist${project.build.sourceDirectory}

Sie finden das zugehörige XML im effektiven POM, z. B.: <project> <build> <sourceDirectory>/my/path</sourceDirectory>

Ebenfalls hilfreich: Sie können eine Echtzeitbewertung der Eigenschaften über die Befehlszeilenausführung von mvn help:evaluatewhile im selben Verzeichnis wie das POM durchführen.


Es scheint, dass einige aus dem XML-Baum stammen und andere aus "nur normalen Eigenschaften" FWIW ...
Rogerdpack

11

Ich denke, der beste Ort, um zu schauen, ist das Super POM .

Zum Beispiel zeigt die verknüpfte Referenz zum Zeitpunkt des Schreibens einige der Eigenschaften zwischen den Zeilen 32 - 48.

Die Interpretation davon ist, dem XPath als .begrenzte Eigenschaft zu folgen .

Also zum Beispiel:

${project.build.testOutputDirectory} == ${project.build.directory}/test-classes

Und:

${project.build.directory} == ${project.basedir}/target

Wenn wir sie kombinieren, finden wir:

${project.build.testOutputDirectory} == ${project.basedir}/target/test-classes

( Informationen zum Verweisen auf die Ressourcenverzeichnisse finden Sie in dieser Frage zum Stapelüberlauf. )


<project>
    <modelVersion>4.0.0</modelVersion>
    .
    .
    .
    <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>

6

Ich habe es satt, diese Seite mit ihren mittlerweile veralteten Verweisen auf nicht mehr existierende Codehaus-Seiten zu sehen, also habe ich auf der Mailingliste der Maven-Benutzer nachgefragt und einige aktuellere Antworten erhalten.

Ich würde sagen, dass die beste (und maßgeblichste) Antwort in meinem obigen Link die von Hervé BOUTEMY ist:

Hier ist die Kernreferenz: http://maven.apache.org/ref/3-LATEST/maven-model-builder/

Es erklärt nicht alles, was in POM oder in Einstellungen zu finden ist, da so viele Informationen verfügbar sind, aber es verweist auf POM- und Einstellungsdeskriptoren und erklärt alles, was nicht POM oder Einstellungen ist


3
Die Frage fragt nach einem Link, daher denke ich, dass Ihr Anliegen fehl am Platz ist. Diese Frage lautet nicht "Wie mache ich X", sondern "Wo finde ich X".
Steve Cohen

2
oops, du hast recht - es ist die Frage, die nicht in diese Seite passt :-) Danke für die Heads-Ups - für den Abschluss gestimmt
Kleopatra

1
Und doch ist es eine Frage, die immer wieder auftaucht, wie in den vielen Antworten, die mein Mailinglisten-Post erhalten hat, ohne weiteres eingeräumt wurde. Der Punkt ist, dass Maven diesen Bereich nicht gut oder präzise genug dokumentiert. Für diese Art von Informationen sollte auf ihrer Website eine Seite angezeigt werden, die es nicht gibt. Selbst aus diesen Links geht nicht sofort hervor, dass jedes Element der POM-Referenz oder anderer erwähnter Stellen in einen Ausdruck $ {dotted.notation} konvertiert und in einer POM-Datei verwendet werden kann. Diese Frage dient daher einem nützlichen Zweck und müsste aktualisiert werden, wenn sie erneut verschoben wird.
Steve Cohen

1
Das Nachfragen nach externen Ressourcen fällt nicht in den Geltungsbereich dieser Website. Wenn alle nach den Regeln spielen würden, gäbe es keine X- Fragen. ---)
Kleopatra

3
Ich verstehe die Regeln manchmal nicht. Es ist eine absolut gültige Frage, und die Leute waren in der Vergangenheit mehr als bereit, sie zu beantworten. Indem Stack Overflow solche Verfechter solcher Regeln ist, schneidet er sich die Nase ab, um sein Gesicht zu ärgern.
Steve Cohen

3

Dieser Link zeigt, wie alle aktiven Eigenschaften aufgelistet werden : http://skillshared.blogspot.co.uk/2012/11/how-to-list-down-all-maven-available.html

Fügen Sie Ihrem POM zusammenfassend die folgende Plugin-Definition hinzu und führen Sie sie aus mvn install:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
        <execution>
            <phase>install</phase>
            <configuration>
                <target>
                    <echoproperties />
                </target>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.