Di mana daftar properti Maven yang telah ditentukan

125

Saya tahu ada daftar semua properti Maven yang telah ditentukan (Anda tahu suka project.build.sourceEncoding, atau project.build.sourceDirectory). Saya pernah melihat daftar itu tetapi saya tidak dapat menemukannya lagi.

Martin
sumber

Jawaban:

132

Ini yang kau maksudkan?

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

Saya juga memindahkan kontennya ke repo GitHub:

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

free_easy
sumber
1
Biasanya, ketika Anda mengedit pom.xml di Intellij IDEA, ini sangat membantu dengan memberikan opsi untuk apa pun yang tampak seperti properti Maven (mis. ${...})
Kedar Mhaswade
mvn help: efektif-pom berdiri sebagai alat yang hebat untuk menemukan properti yang tersedia. maven.apache.org/plugins/maven-help-plugin/…
Peter Kahn
1
Juga tinjau halaman ini di wiki Maven: cwiki.apache.org/confluence/display/MAVEN/…
Guss
Tidak termasuk "semuanya" seperti [WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.tetapi termasuk sebagian besar;)
rogerdpack
26

Melihat "POM efektif" mungkin akan membantu juga. Misalnya, jika Anda ingin tahu untuk apa jalan itu${project.build.sourceDirectory}

Anda akan menemukan XML terkait di POM yang efektif, seperti: <project> <build> <sourceDirectory>/my/path</sourceDirectory>

Juga membantu - Anda dapat melakukan evaluasi real-time properti melalui eksekusi baris perintah mvn help:evaluatesementara di dir yang sama dengan POM.

Michael Ford
sumber
Tampaknya ada yang dari pohon XML dan ada yang dari "hanya sifat normal" FWIW ...
rogerdpack
11

Saya pikir tempat terbaik untuk melihat adalah Super POM .

Sebagai contoh, pada saat penulisan, referensi yang ditautkan menunjukkan beberapa properti antara baris 32 - 48.

Interpretasi dari ini adalah untuk mengikuti XPath sebagai .properti terbatas.

Jadi, misalnya:

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

Dan:

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

Dengan menggabungkan mereka, kami menemukan:

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

(Untuk referensi direktori sumber daya, lihat pertanyaan stackoverflow ini )


<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
sumber
6

Saya bosan melihat halaman ini dengan referensi basi yang sekarang sudah tidak berlaku lagi untuk halaman Codehaus jadi saya bertanya pada milis Pengguna Maven dan mendapat jawaban yang lebih baru.

Saya akan mengatakan bahwa jawaban terbaik (dan paling otoritatif) yang terkandung dalam tautan saya di atas adalah jawaban dari Hervé BOUTEMY:

di sini adalah referensi inti: http://maven.apache.org/ref/3-LATEST/maven-model-builder/

itu tidak menjelaskan semua yang dapat ditemukan di POM atau di pengaturan, karena ada begitu banyak info yang tersedia tetapi menunjuk ke POM dan pengaturan deskriptor dan menjelaskan segala sesuatu yang bukan POM atau pengaturan

Steve Cohen
sumber
3
Pertanyaan itu sendiri meminta tautan, jadi saya pikir kekhawatiran Anda salah tempat. Pertanyaan ini tidak menanyakan "Bagaimana saya melakukan X" tetapi "Di mana saya dapat menemukan X".
Steve Cohen
2
oops, Anda benar - ini pertanyaan yang tidak cocok dengan situs ini :-) Terima kasih atas dukungannya - terpilih untuk ditutup
kleopatra
1
Namun, ini adalah pertanyaan yang muncul berulang-ulang seperti yang mudah diterima dalam banyak jawaban yang diterima posting milis saya. Intinya adalah bahwa Maven tidak mendokumentasikan area ini dengan baik atau cukup ringkas. Seharusnya ada halaman yang secara jelas ditampilkan di situs web mereka untuk info semacam ini dan tidak ada. Bahkan tidak segera jelas dari tautan ini, bahwa setiap elemen dari referensi POM atau tempat lain yang disebutkan dapat dikonversi ke ekspresi $ {dotted.notation} dan digunakan dalam file POM. Pertanyaan ini karenanya memiliki tujuan yang bermanfaat dan perlu diperbarui jika dipindahkan lagi.
Steve Cohen
1
meminta sumber daya eksternal berada di luar cakupan situs ini, jika semua bermain sesuai aturan, tidak akan ada pertanyaan X ;-)
kleopatra
3
Terkadang saya tidak mengerti aturannya. Ini adalah pertanyaan yang benar-benar valid, dan orang-orang lebih dari bersedia untuk menjawabnya di masa lalu. Dengan menjadi pengadu seperti itu, Stack Overflow memotong hidungnya untuk menggerutu.
Steve Cohen
3

Tautan ini menunjukkan cara mendaftar semua properti aktif: http://skillshare.blogspot.co.uk/2012/11/how-to-list-down-all-maven-available.html

Singkatnya, tambahkan definisi plugin berikut ke POM Anda, kemudian jalankan 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
sumber