¿Dónde está la lista de propiedades predefinidas de Maven?

125

Sé que hay una lista de todas las propiedades predefinidas de Maven (ya sabes project.build.sourceEncoding, o project.build.sourceDirectory). Una vez vi la lista, pero no puedo encontrarla nuevamente.

Martín
fuente

Respuestas:

132

¿Te refieres a este?

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

También moví su contenido a un repositorio de GitHub:

https://github.com/cko/predefined_maven_properties/blob/master/README.md

libre_fácil
fuente
1
Por lo general, cuando edita pom.xml en Intellij IDEA, es de gran ayuda al proporcionar opciones para cualquier cosa que se parezca a una propiedad de Maven (por ejemplo ${...})
Kedar Mhaswade
mvn help: efectivo-pom se erige como una gran herramienta para descubrir las propiedades disponibles. maven.apache.org/plugins/maven-help-plugin/…
Peter Kahn el
1
También revise esta página en el wiki de Maven: cwiki.apache.org/confluence/display/MAVEN/…
Guss
No incluye "todo", [WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.pero incluye la mayoría;)
rogerdpack
26

Mirar el "POM efectivo" probablemente también ayudará. Por ejemplo, si quisieras saber para qué es el camino${project.build.sourceDirectory}

encontrará el XML relacionado en el POM efectivo, como: <project> <build> <sourceDirectory>/my/path</sourceDirectory>

También es útil: puede hacer una evaluación en tiempo real de las propiedades mediante la ejecución de la línea de comandos mvn help:evaluatemientras está en el mismo directorio que el POM.

Michael Ford
fuente
Parece que algunos son del árbol XML y algunos son de "propiedades simplemente normales" Fwiw ...
rogerdpack
11

Creo que el mejor lugar para buscar es el Super POM .

Como ejemplo, al momento de escribir, la referencia vinculada muestra algunas de las propiedades entre las líneas 32-48.

La interpretación de esto es seguir el XPath como una .propiedad delimitada.

Así por ejemplo:

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

Y:

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

Combinándolos así, encontramos:

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

(Para hacer referencia a los directorios de recursos, consulte esta pregunta de 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>
Stewart
fuente
6

Me cansé de ver esta página con sus referencias obsoletas para las páginas de Codehaus desaparecidas, así que pregunté en la lista de correo de los usuarios de Maven y obtuve algunas respuestas más actualizadas.

Diría que la respuesta mejor (y más autorizada) contenida en mi enlace anterior es la aportada por Hervé BOUTEMY:

Aquí está la referencia central: http://maven.apache.org/ref/3-LATEST/maven-model-builder/

no explica todo lo que se puede encontrar en POM o en la configuración, ya que hay mucha información disponible, pero apunta a POM y descriptores de configuración y explica todo lo que no es POM o configuración

Steve Cohen
fuente
3
La misma pregunta pide un enlace, por lo que creo que su preocupación está fuera de lugar. Esta pregunta no pregunta "Cómo hago X" sino "Dónde puedo encontrar X".
Steve Cohen
2
oops, tienes razón, es la pregunta que no cabe en este sitio :-) Gracias por el
aviso
1
Y, sin embargo, es una pregunta que surge una y otra vez, como se reconoció fácilmente en las muchas respuestas que recibió mi publicación en la lista de correo. Debe haber una página destacada en su sitio web para este tipo de información y no la hay. No está claro de inmediato, incluso a partir de estos enlaces, que cualquier elemento de la referencia POM u otros lugares mencionados pueden convertirse en una expresión $ {dotted.notation} y usarse en un archivo POM. Por lo tanto, esta pregunta tiene un propósito útil y necesitaría actualizarse si se mueve nuevamente.
Steve Cohen
1
pedir recursos externos está fuera del alcance de este sitio, si todo
cumpliera
3
No entiendo las reglas a veces. Es una pregunta perfectamente válida, y la gente ha estado más que dispuesta a responderla en el pasado. Al ser tan estrictos con tales reglas, Stack Overflow le corta la nariz para fastidiar su cara.
Steve Cohen
3

Este enlace muestra cómo enumerar todas las propiedades activas: http://skillshared.blogspot.co.uk/2012/11/how-to-list-down-all-maven-available.html

En resumen, agregue la siguiente definición de complemento a su POM, luego ejecute 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>
Steve Pitchers
fuente