Onde está a lista de propriedades predefinidas do Maven

125

Eu sei que há uma lista de todas as propriedades predefinidas do Maven (você sabe como project.build.sourceEncodingou project.build.sourceDirectory). Uma vez vi a lista, mas não consigo encontrá-la novamente.

Martin
fonte

Respostas:

132

Você quer dizer este?

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

Também mudei seu conteúdo para um repositório do GitHub:

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

free_easy
fonte
1
Normalmente, quando você editar pom.xml no IntelliJ IDEA, que ajuda muito, fornecendo opções para qualquer coisa que se parece com uma propriedade Maven (por exemplo ${...})
Kedar Mhaswade
mvn help: o pom-efectivo é uma ótima ferramenta para descobrir as propriedades disponíveis. maven.apache.org/plugins/maven-help-plugin/…
Peter Kahn
1
Leia
Guss
Não inclui "tudo" como [WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.mas inclui a maioria;)
rogerdpack 03/02
26

Olhar para o "POM eficaz" provavelmente também ajudará. Por exemplo, se você quiser saber para que serve o caminho${project.build.sourceDirectory}

você encontraria o XML relacionado no POM efetivo, como: <project> <build> <sourceDirectory>/my/path</sourceDirectory>

Também é útil - você pode fazer uma avaliação em tempo real das propriedades através da execução da linha de comando mvn help:evaluateenquanto estiver no mesmo diretório que o POM.

Michael Ford
fonte
Parece que alguns são da árvore XML e outros são "apenas propriedades normais" FWIW ...
rogerdpack 03/02
11

Eu acho que o melhor lugar para procurar é o Super POM .

Como exemplo, no momento da redação, a referência vinculada mostra algumas das propriedades entre as linhas 32 - 48.

A interpretação disso é seguir o XPath como uma .propriedade delimitada.

Então, por exemplo:

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

E:

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

Assim, combinando-os, encontramos:

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

(Para referenciar os diretórios de recursos, consulte esta pergunta sobre o 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
fonte
6

Eu me cansei de ver esta página com suas referências obsoletas às páginas extintas do Codehaus, então perguntei na lista de discussão Maven Users e obtive algumas respostas mais atualizadas.

Eu diria que a melhor (e mais autoritária) resposta contida no meu link acima é a contribuição de Hervé BOUTEMY:

aqui está a referência principal: http://maven.apache.org/ref/3-LATEST/maven-model-builder/

ele não explica tudo o que pode ser encontrado no POM ou nas configurações, pois há muitas informações disponíveis, mas aponta para POM e descritores de configurações e explica tudo o que não é POM ou configurações

Steve Cohen
fonte
3
A própria pergunta pede um link, por isso acho que sua preocupação está equivocada. Esta pergunta não pergunta "Como faço para X", mas "Onde posso encontrar X".
Steve Cohen
2
oops, você está certo - é a pergunta que não se encaixam neste site :-) Graças a cabeça para cima - votou para fechar
kleopatra
1
E, no entanto, é uma pergunta que surge de novo e de novo, como foi prontamente concedido nas muitas respostas que minha postagem na lista de emails recebeu .. O ponto é que o Maven não documenta essa área de maneira suficientemente concisa ou concisa. Deve haver uma página destacada em seu site para esse tipo de informação e não existe. Ainda não está claro, mesmo nesses links, que qualquer elemento da referência POM ou de outros locais mencionados pode ser convertido em uma expressão $ {dotted.notation} e usado em um arquivo POM. Essa pergunta, portanto, serve a um propósito útil e precisaria ser atualizada se for movida novamente.
Steve Cohen
1
pedindo recursos externos está desligada âmbito deste site, se tudo iria jogar pelas regras, não haveria qualquer onde está a X questões ;-)
kleopatra
3
Eu não entendo as regras às vezes. É uma pergunta perfeitamente válida, e as pessoas estavam mais do que dispostas a responder no passado. Sendo defensores de tais regras, o Stack Overflow corta o nariz para despejar o rosto.
Steve Cohen
3

Este link mostra como listar todas as propriedades ativas: http://skillshared.blogspot.co.uk/2012/11/how-to-list-down-all-maven-available.html

Em resumo, adicione a seguinte definição de plug-in ao seu POM e execute 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
fonte