http://maven.apache.org/pom.html#Propertiesによると、プロパティは「POM内のどこからでも値にアクセスできます」とのことです。
これは「 POM内のほとんどの場所でアクセス可能」と読む必要がありますか?
次のように、依存関係のバージョンを問題なく指定できます。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
しかし、プロジェクト自体のバージョンはどうでしょうか。
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>${myversion}</version>
<properties>
<myversion>8</myversion>
</properties>
<modules>
<module>alpha</module>
<module>beta</module>
</modules>
...
これを試してみると、<version>の値は8になりません。ここではpomで$ {myversion}を定義しましたが、コマンドラインで-Dmyversion=8を指定した場合も同じように見えます。
モジュールの1つが、次のようにハードコードされたバージョン番号でその親を指定する場合:
<parent>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>8</version>
</parent>
ビルドしようとすると、Mavenがモジュールのpomを確認すると、バージョン8で指定された親pomが見つからないと表示されます。
ただし、$ {myversion}を使用するのではなく、親のバージョンも8にハードコーディングすると、すべてが正常に機能します。
したがって、親pomの/ project/versionタグのプロパティ置換は発生しないように思われます。
これは事実ですか、それとも私が見ているように見えるものについて他の説明がありますか?
よろしく、
/ジョージ