マルチモジュールプロジェクトのプロパティに関する質問があります。私は「不明」のデフォルト値を取得するプロパティリビジョンを定義し、スーパーポンポンでマルチモジュールプロジェクトのMavenプロパティがデフォルトにリセットされます
project
+- pom.xml (packaging: pom) //referred to as super-pom
+- module_group
+- pom.xml (packaging: pom) //referred to as group-pom
+- module
+-pom.xml (packaging: jar) //referred to as module-pom
:
は、次の3レベルのプロジェクトカルコゲノフルバレン骨格を考えてみましょう。
さらに、buildnumber-maven-plugin
は、svnリビジョンを取得して、リビジョンに配置するように設定されています。
次に、そのプロパティをマニフェストに書き込むようにmaven-jar-plugin
を設定します。
モジュール-pomでは、実際に実行されるようにbuildnumber-maven-plugin
の使用を宣言します。
これは、モジュールを直接ビルドするとき、つまりmodule-pomのみを実行するときにすべて機能します。 マニフェストには、buildnumber-maven-plugin
によって報告されたリビジョンがコンソールに表示されています。 I超POMを実行したり、グループPOM場合buildnumber-maven-plugin
は実行されます、それが正しいリビジョン(それは前コンソールにそれをプリントを取得ものの、リビジョンのデフォルト値は、マニフェストに書き込まれ
maven-jar-plugin
実行)。
私は、マルチモジュールプロジェクトでプロパティの継承に何か不足していると感じています。
ここで何が間違っているのでしょうか?あるいは、誰もが、そのような場合にどのようにプロパティが実際に処理されるかについての説明に私を指摘することができますか(残念ながら、まだ良い説明を見つけることはできませんでした)?
更新
私はいくつかの研究を行なったし、いくつかのテストは、デバッグ出力(-X
オプション)で、私はこれまでのところ、私は私の問題は、次のされていると見つけたものから実行:
1)中、 pomで使用されるプロパティを解析するpomは、その値に置き換えられます。 POMが評価された後は、これに相当する状態をもたらすように思われる、
<!-- declare the property default value -->
<properties>
<revision>default</revision>
</properties>
...
<!-- use the property -->
<someconfig>${revision}</someconfig>
:実際の設定
<properties>
<revision>default</revision>
</properties>
...
<!-- The property seems to be "statically" replaced -->
<someconfig>default</someconfig>
2)プラグインを
この部分POMを検討プロパティ値はvalidate
フェーズ中であってもその後に実行されます。
したがって、プロパティ自体は正しく新しい値に設定されますが、それ以上読み取られません。<someconfig>
を使用しています
3)プラグインが(私の場合それは今<someconfig>default</someconfig>
で実行されますので、それがすべてでrevision
を読まない)maven-jar-plugin
だろう。
誰でもこれを確認できますか?