事前定義されたMavenプロパティのリストはどこにありますか


125

事前定義されたすべてのMavenプロパティのリストがあることを知っています(project.build.sourceEncodingやのように知っていますproject.build.sourceDirectory)。私はかつてリストを見ましたが、それを再び見つけることができません。

回答:


132

1
通常、ときのIntelliJ IDEAでの編集のpom.xml、それはMavenのプロパティ(たとえばのように見えることを何のためのオプションを提供することにより、大幅に役立ちます${...}
ケダルMhaswade

mvn help:effective-pomは、利用可能なプロパティを発見するための優れたツールです。 maven.apache.org/plugins/maven-help-plugin/...
ピーター・カーンに

1
また、Mavenのウィキにこのページを確認してください。cwiki.apache.org/confluence/display/MAVEN/...
GUSS

のような「すべて」は含まれません[WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.が、ほとんどが含まれます;)
rogerdpack


26

「効果的なPOM」を確認することも役立つでしょう。たとえば、パスの目的を知りたい場合${project.build.sourceDirectory}

次のような効果的なPOMで関連するXMLを見つけます。 <project> <build> <sourceDirectory>/my/path</sourceDirectory>

またmvn help:evaluate、POMと同じディレクトリでコマンドラインを実行して、プロパティをリアルタイムで評価することもできます。


一部はXMLツリーからのものであり、一部は「単なる通常のプロパティ」FWIWからのものである...
rogerdpack

11

見るのに最適な場所はSuper POMだと思います。

例として、執筆時点では、リンクされた参照は、32〜48行目のいくつかのプロパティを示しています。

この解釈は、XPathを.区切られたプロパティとして追跡することです。

したがって、たとえば:

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

そして:

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

したがって、それらを組み合わせると、次のことがわかります。

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

(resourcesディレクトリを参照するには、この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

私はこのページを、今では陳腐化したCodehausページへの古くなった参照で見るのに飽きたので、Mavenユーザーのメーリングリストに質問して、さらに最新の回答を得ました。

上記の私のリンクに含まれている最良の(そして最も信頼できる)答えはHervéBOUTEMYによって提供されたものだと私は言うでしょう:

ここにコアリファレンスがあります:http : //maven.apache.org/ref/3-LATEST/maven-model-builder/

POMや設定にあるすべてを説明しているわけではありません。利用できる情報がたくさんあるためですが、POMと設定記述子を指し、POMや設定以外のすべてを説明しています。


3
質問そのものがリンクを求めているので、あなたの懸念は見当違いだと思います。この質問では、「Xはどうすればよいですか」ではなく、「どこでXを見つけられますか?」
Steve Cohen、

2
おっと、あなたは正しいです-それはこのサイトに適合しない質問です:-)頭をありがとう-終了投票
kleopatra

1
それでも、それは私のメーリングリストの投稿が受け取った多くの回答ですぐに認められたように、何度も何度も出てくる質問です。ポイントは、Mavenがこの領域を十分または簡潔に文書化していないことです。この種の情報のために彼らのウェブサイトに目立つように表示されるページがあるはずですが、ありません。これらのリンクからさえ、すぐには明確ではありません。POM参照の要素または言及されている他の場所が$ {dotted.notation}式に変換され、POMファイルで使用できることは明らかです。したがって、この質問は有用な目的を果たしており、再度移動する場合は更新する必要があります。
スティーブコーエン

1
外部リソースを要求することはこのサイトの範囲外であり、すべてがルールに従っている場合、Xの質問はどこにもありません;-)
kleopatra

3
時々ルールがわかりません。これは完全に有効な質問であり、人々はこれまでに答えようとはしていませんでした。スタックオーバーフローは、そのようなルールにこだわる人であることによって、鼻を切り落として顔を歪めています。
スティーブコーエン

3

このリンクは、すべてのアクティブなプロパティを一覧表示する方法を示しています。http//skillshared.blogspot.co.uk/2012/11/how-to-list-down-all-maven-available.html

要約すると、次のプラグイン定義をPOMに追加して実行します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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.