2016-05-12 13 views
1

プロパティをMavenに提供し、実際にpom.xmlファイルでそれらを置き換えるにはどうすればよいですか?例えば。私はパッケージといくつかの依存関係を展開するために使用する "テンプレート" pom.xmlを持っています。 artifactIdversionなどの変数を置き換えて、結果としてpom.xmlをアップロードします。pom.xml内のパラメータを置き換えます。

コマンドライン引数を使用しても機能しません。 mvn clean deploy -DartifactId=someArtifact jarを正しい場所にアップロードしますが、アップロードされたpom.xmlには実際の値ではなくプレースホルダ変数が含まれています。

具体例:

POMファイル依存関係のこの定義が含まれています

<dependencies> 
     <dependency> 
      <groupId>com.avast.melka</groupId> 
      <artifactId>${runtimeId}</artifactId> 
      <version>${runtimeVersion}</version> 
     </dependency> 
    </dependencies> 

そして私は、Mavenのようなもの含むPOMに対応するパッケージを展開する:

どう
<dependencies> 
    <dependency> 
     <groupId>com.avast.melka</groupId> 
     <artifactId>actualIdValue</artifactId> 
     <version>1.0.42</version> 
    </dependency> 
</dependencies> 

を私はそれをしますか?私が見つけた最も近いものはhttp://maven.apache.org/plugins/maven-resources-plugin/examples/filter.htmlでした - しかし、これはPOMではなくリソースファイルの値を置き換えることを扱っています。そして、私にとっては別のユースケースのようです。

+0

あなたの設定は次のようになります。 'maven-release-plugin'はバージョンと似たようなことをしています...私はそれが何をしているかに基づいて独自のプラグインを作ることができると思います。 – Tunaki

+0

展開する成果物のpomファイルのテンプレートが必要なのはなぜですか?どうしてそれらを作成し、それを使って、mvn deployを使ってmavenビルドを使用しないのでしょうか? – khmarbaise

+0

私は会社の異なるチームによってインスタンス化され、異なるGAVCと依存関係のmaven jarを生成するようカスタマイズされたジェネリックCIビルドジョブで自動的に使用したいと思います。各チームが独自のPOM.xmlを手動で作成する代わりに、インスタンス化時にビルドジョブパラメータをカスタマイズできるようにしたいと考えています。それとは別に、すべての変数が "石に設定"されていても、私はまだビルドで 'version'を提供する必要があります(3番目のビルド番号はビルド番号に相当します)。 –

答えて

0

replacer-pluginを使用することができます。プラグインの詳細な使用方法については、インターネットを参照してください。

警告1:私はartifactIdを置き換えるのはメンテナンス可能な戦略だとは思わない。しかしそれはあなたの選択です。

警告2:このプラグインは、この特定のビルドでのみアクティブになるプロファイル内でのみ定義してください。さもなければ、このプラグインの実行は子プロジェクトに継承されます。これは悪い考えです。私はそれを行うための簡単な方法があるとは思わない

<plugin> 
    <groupId>com.google.code.maven-replacer-plugin</groupId> 
    <artifactId>replacer</artifactId> 
    <executions> 
     <execution> 
      <id>yourId</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>replace</goal> 
      </goals> 
      <configuration> 
       <replacements> 
        <replacement> 
         <token><![CDATA[<version>[$][{]runtimeVersion[}]</version>]]></token> 
         <value><![CDATA[<version>1.0.42</version>]]></value> 
        </replacement> 
       </replacements> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
関連する問題