2011-09-29 4 views
5

マルチモジュールプロジェクトのプロパティに関する質問があります。私は「不明」のデフォルト値を取得するプロパティリビジョンを定義し、スーパーポンポンでマルチモジュールプロジェクトの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だろう。

誰でもこれを確認できますか?

答えて

0

スーパーポームでbuildnumber-maven-pluginとmaven-jar-pluginを宣言しても、グループビルドであろうとターゲットビルドであろうと、私にとってはうまくいきます。

ここでは、この超ポンポン(すべてのプロジェクトの親)の一部です:

 <!-- Generate build number --> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>buildnumber-maven-plugin</artifactId> 
      <version>1.0</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>create</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <doCheck>false</doCheck> 
       <doUpdate>false</doUpdate> 
      </configuration> 
     </plugin> 
     <!-- Attach build number to all jars --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.1</version> 
      <configuration> 
       <archive> 
        <manifest> 
         <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
        </manifest> 
        <manifestEntries> 
         <Implementation-Build>${buildNumber}</Implementation-Build> 
         <Implementation-Build-Timestamp>${maven.build.timestamp}</Implementation-Build-Timestamp> 
        </manifestEntries> 
       </archive> 
      </configuration> 
     </plugin> 
関連する問題