Où se trouve la liste des propriétés Maven prédéfinies


125

Je sais qu'il existe une liste de toutes les propriétés Maven prédéfinies (vous savez comme project.build.sourceEncoding, ou project.build.sourceDirectory). J'ai vu une fois la liste mais je ne peux tout simplement pas la retrouver.

Réponses:


132

1
Habituellement, lorsque vous modifiez pom.xml dans Intellij IDEA, cela aide grandement en fournissant des options pour tout ce qui ressemble à une propriété Maven (par exemple ${...})
Kedar Mhaswade

mvn help: effective-pom est un excellent outil pour découvrir les propriétés disponibles. maven.apache.org/plugins/maven-help-plugin/…
Peter Kahn

1
Consultez également cette page dans le wiki Maven: cwiki.apache.org/confluence/display/MAVEN/…
Guss

N'inclut pas "tout" comme [WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.mais inclut la plupart;)
rogerdpack


26

Examiner le "POM efficace" aidera probablement aussi. Par exemple, si vous voulez savoir à quoi sert le chemin${project.build.sourceDirectory}

vous trouverez le XML associé dans le POM effectif, tel que: <project> <build> <sourceDirectory>/my/path</sourceDirectory>

Aussi utile - vous pouvez faire une évaluation en temps réel des propriétés via l'exécution en ligne de commande de mvn help:evaluatewhile dans le même répertoire que le POM.


Il semble que certains proviennent de l'arborescence XML et d'autres proviennent de "propriétés normales" FWIW ...
rogerdpack

11

Je pense que le meilleur endroit pour regarder est le Super POM .

À titre d'exemple, au moment de la rédaction de cet article, la référence liée montre certaines des propriétés entre les lignes 32 à 48.

L'interprétation de ceci est de suivre le XPath comme une .propriété délimitée.

Ainsi, par exemple:

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

Et:

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

Ainsi en les combinant, on trouve:

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

(Pour référencer le (s) répertoire (s) de ressources, voir cette question stackoverflow )


<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

J'en avais marre de voir cette page avec ses références désormais obsolètes à des pages obsolètes de Codehaus, alors j'ai posé la question sur la liste de diffusion des utilisateurs de Maven et j'ai obtenu des réponses plus à jour.

Je dirais que la meilleure (et la plus fiable) réponse contenue dans mon lien ci-dessus est celle apportée par Hervé BOUTEMY:

voici la référence principale: http://maven.apache.org/ref/3-LATEST/maven-model-builder/

il n'explique pas tout ce qui peut être trouvé dans POM ou dans les paramètres, car il y a tellement d'informations disponibles mais il pointe vers le POM et les descripteurs de paramètres et explique tout ce qui n'est pas du POM ou des paramètres


3
La question même demande un lien, donc je pense que votre préoccupation est déplacée. Cette question ne demande pas "Comment faire X" mais "Où puis-je trouver X".
Steve Cohen

2
oups, vous avez raison - c'est la question qui ne rentre pas dans ce site :-) Merci pour la mise en garde - a voté pour fermer
kleopatra

1
Et pourtant, c'est une question qui revient encore et encore comme cela a été facilement concédé dans les nombreuses réponses que mon message sur la liste de diffusion a reçues .. Le fait est que Maven ne documente pas ce domaine de manière assez précise ou assez concise. Il devrait y avoir une page bien en vue sur leur site Web pour ce type d'informations et il n'y en a pas. Il n'est pas immédiatement clair, même à partir de ces liens, que tout élément de la référence POM ou d'autres endroits mentionnés peuvent être convertis en une expression $ {dotted.notation} et utilisés dans un fichier POM. Cette question sert donc un objectif utile et devrait être mise à jour si elle est à nouveau déplacée.
Steve Cohen

1
demander des ressources externes est hors de portée de ce site, si tout le monde jouait selon les règles, il n'y en aurait pas où se trouve X questions ;-)
kleopatra

3
Parfois, je ne comprends pas les règles. C'est une question parfaitement valable, et les gens ont été plus que disposés à y répondre dans le passé. En étant tellement collant à de telles règles, Stack Overflow se coupe le nez pour malgré son visage.
Steve Cohen

3

Ce lien montre comment lister toutes les propriétés actives: http://skillshared.blogspot.co.uk/2012/11/how-to-list-down-all-maven-available.html

En résumé, ajoutez la définition de plugin suivante à votre POM, puis exécutez 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>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.