Dov'è l'elenco delle proprietà predefinite di Maven


125

So che esiste un elenco di tutte le proprietà Maven predefinite (sai come project.build.sourceEncoding, o project.build.sourceDirectory). Una volta ho visto l'elenco ma non riesco a trovarlo di nuovo.

Risposte:


132

1
Di solito, quando modifichi pom.xml in Intellij IDEA, aiuta notevolmente fornendo opzioni per tutto ciò che sembra una proprietà Maven (ad esempio ${...})
Kedar Mhaswade

mvn help: efficace-pom è un ottimo strumento per scoprire le proprietà disponibili. maven.apache.org/plugins/maven-help-plugin/…
Peter Kahn


Non include "tutto" come [WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.ma include la maggior parte;)
rogerdpack


26

Guardare il "POM efficace" probabilmente aiuterà anche. Ad esempio, se volessi sapere a cosa serve il percorso${project.build.sourceDirectory}

troverai il codice XML correlato nel POM effettivo, come ad esempio: <project> <build> <sourceDirectory>/my/path</sourceDirectory>

Utile anche: è possibile eseguire una valutazione in tempo reale delle proprietà tramite l'esecuzione da riga di comando mvn help:evaluatenella stessa directory del POM.


Sembra che alcuni
provengano

11

Penso che il posto migliore dove cercare sia il Super POM .

Ad esempio, al momento della scrittura, il riferimento collegato mostra alcune delle proprietà tra le righe 32 - 48.

L'interpretazione di questo è di seguire XPath come .proprietà delimitata.

Quindi, per esempio:

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

E:

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

Combinandoli così, troviamo:

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

(Per fare riferimento alle directory delle risorse, vedere questa domanda di 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

Mi sono stancato di vedere questa pagina con i suoi riferimenti ormai obsoleti alle pagine defunte di Codehaus, quindi ho chiesto alla mailing list degli utenti di Maven e ho ottenuto alcune risposte più aggiornate.

Direi che la risposta migliore (e più autorevole) contenuta nel mio link sopra è quella fornita da Hervé BOUTEMY:

ecco il riferimento principale: http://maven.apache.org/ref/3-LATEST/maven-model-builder/

non spiega tutto ciò che può essere trovato in POM o nelle impostazioni, poiché ci sono così tante informazioni disponibili ma fa riferimento a POM e ai descrittori delle impostazioni e spiega tutto ciò che non è POM o impostazioni


3
La stessa domanda richiede un collegamento, quindi penso che la tua preoccupazione sia fuori luogo. Questa domanda non pone "Come faccio X" ma "Dove posso trovare X".
Steve Cohen,

2
oops, hai ragione - è la domanda che non rientra in questo sito :-) Grazie per il testa a testa - votato per chiudere
Kleopatra

1
Eppure, si tratta di una domanda che si ripete più e più volte, come è stato prontamente concesso nelle molte risposte ricevute dalla mia mailing list .. Il punto è che Maven non documenta questa area abbastanza bene o concisamente. Ci dovrebbe essere una pagina ben visibile sul loro sito Web per questo tipo di informazioni e non lo è. Non è immediatamente chiaro nemmeno da questi collegamenti, che qualsiasi elemento del riferimento POM o altri luoghi citati può essere convertito in un'espressione $ {dotted.notation} e utilizzato in un file POM. Questa domanda ha quindi uno scopo utile e dovrebbe essere aggiornata se viene spostata di nuovo.
Steve Cohen,

1
la richiesta di risorse esterne non rientra nell'ambito di questo sito, se tutti rispettassero le regole non ci sarebbero domande dov'è X ;-)
Kleopatra,

3
A volte non capisco le regole. È una domanda perfettamente valida e le persone sono state più che disposte a rispondere in passato. Essendo tali attaccanti per tali regole Stack Overflow si taglia il naso per dispetto alla sua faccia.
Steve Cohen,

3

Questo link mostra come elencare tutte le proprietà attive: http://skillshared.blogspot.co.uk/2012/11/how-to-list-down-all-maven-available.html

In breve, aggiungi la seguente definizione di plugin al tuo POM, quindi esegui 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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.