Önceden tanımlanmış Maven özelliklerinin listesi nerede


125

Önceden tanımlanmış tüm Maven özelliklerinin bir listesi olduğunu biliyorum ( project.build.sourceEncoding, veya gibi biliyorsunuz project.build.sourceDirectory). Listeyi bir kez görmüştüm ama bir daha bulamıyorum.

Yanıtlar:


132

1
Genellikle, Intellij IDEA'da pom.xml dosyasını düzenlediğinizde, Maven özelliğine benzeyen herhangi bir şey için seçenekler sunarak büyük ölçüde yardımcı olur (örn. ${...})
Kedar Mhaswade

mvn help: effective-pom, mevcut özellikleri keşfetmek için harika bir araçtır. maven.apache.org/plugins/maven-help-plugin/…
Peter Kahn

1
Ayrıca Maven wiki'deki şu sayfayı da gözden geçirin
Guss

Gibi [WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.ancak çoğu dahil "her şeyi" içermez ;)
rogerdpack


26

"Etkili POM" a bakmak da muhtemelen yardımcı olacaktır. Örneğin, yolun ne için olduğunu bilmek istiyorsanız${project.build.sourceDirectory}

İlgili XML'yi etkili POM'da bulabilirsiniz, örneğin: <project> <build> <sourceDirectory>/my/path</sourceDirectory>

Ayrıca yararlıdır - mvn help:evaluatePOM ile aynı dizindeyken komut satırı uygulaması yoluyla özelliklerin gerçek zamanlı değerlendirmesini yapabilirsiniz .


Görünüşe göre bazıları XML ağacından ve bazıları "sadece normal özellikler"
FWIW'den

11

Bence bakılacak en iyi yer Süper POM .

Örnek olarak, yazma sırasında, bağlantılı referans 32 - 48. satırlar arasındaki bazı özellikleri gösterir.

Bunun yorumu, XPath'i .sınırlandırılmış bir özellik olarak takip etmektir .

Yani mesela:

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

Ve:

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

Böylece onları birleştirerek buluyoruz:

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

(Kaynaklar dizinlerine başvurmak için bu yığın akışı sorusuna bakın )


<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

Artık kullanılmayan Codehaus sayfalarına atıfta bulunan bu sayfayı görmekten yoruldum, bu yüzden Maven Kullanıcıları posta listesine sordum ve daha güncel yanıtlar aldım.

Yukarıdaki bağlantımda yer alan en iyi (ve en yetkili) cevabın Hervé BOUTEMY tarafından sağlanan cevap olduğunu söyleyebilirim:

işte temel referans: http://maven.apache.org/ref/3-LATEST/maven-model-builder/

POM'da veya ayarlarda bulunabilecek her şeyi açıklamıyor, çünkü çok fazla bilgi mevcut ancak POM ve ayar tanımlayıcılarına işaret ediyor ve POM veya ayarlar olmayan her şeyi açıklıyor


3
Sorunun kendisi bir bağlantı gerektiriyor, bu yüzden endişenizin yanlış olduğunu düşünüyorum. Bu soru "X'i nasıl yaparım" değil, "X'i nerede bulabilirim" diye soruyor.
Steve Cohen

2
oops, haklısın - bu siteye uymayan soru :-) Uyarılar için teşekkürler - kapanış için oy verildi
kleopatra

1
Ve yine de, posta listemdeki gönderimin aldığı yanıtların çoğunda kabul edildiği gibi, bu tekrar tekrar ortaya çıkan bir soru. Asıl nokta, Maven'in bu alanı yeterince iyi veya kısaca belgelememesidir. Bu tür bilgiler için web sitelerinde belirgin bir şekilde görüntülenen bir sayfa olmalıdır ve yoktur. Bu bağlantılardan bile, POM referansının herhangi bir öğesinin veya belirtilen diğer yerlerin bir $ {dotted.notation} ifadesine dönüştürülebileceği ve bir POM dosyasında kullanılabileceği hemen anlaşılamaz. Bu soru, bu nedenle yararlı bir amaca hizmet eder ve tekrar taşınırsa güncellenmesi gerekir.
Steve Cohen

1
harici kaynaklar istemek bu sitenin kapsamı dışındadır, eğer her şey kurallara göre
oynanırsa

3
Bazen kuralları anlamıyorum. Bu tamamen geçerli bir soru ve geçmişte insanlar bunu cevaplamaya fazlasıyla istekli oldular. Stack Overflow, bu tür kurallara bu kadar sıkı sıkıya bağlı olarak yüzüne rağmen burnunu keser.
Steve Cohen

3

Bu bağlantı, tüm etkin mülklerin nasıl listeleneceğini gösterir: http://skillshared.blogspot.co.uk/2012/11/how-to-list-down-all-maven-available.html

Özet olarak, aşağıdaki eklenti tanımını POM'nuza ekleyin ve ardından çalıştırın 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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.