1

プロファイルに応じてアーティファクトのバージョンをダイナマイズする方法を探しています。

多くの場合、dev または preprod 用にビルドするときに -SNAPSHOT サフィックスを使用します。しかし、データベース接続はプロファイルに依存し、最新の SNAPSHOT バージョンが dev または preprod プロファイルを使用してビルドされたかどうかはわかりません。

アイデアは、このようなバージョンを持つことです

<version>1.0${suffix}</version> 

${接尾辞} =

  • "" prod プロファイルでビルドする場合
  • preprod プロファイルでビルドする場合の「-SNAPSHOT」
  • dev プロファイルでビルドする場合の「-DEV-SNAPSHOT」

これを達成する方法はありますか?

ありがとう

編集 :

私の目標は、jenkins を使用して jar を構築するときです。3 つのプロファイルを使用してプロジェクトの同じ「タグ付き」バージョンを構築し、3 つの異なるアーティファクトをデプロイします。

実際には、プロジェクトにタグを付けて prod プロファイルでビルドし、バージョンを変更して -SNAPSHOT を追加し、コミットし、タグを移動し、preprod プロファイルで再ビルドし、dev プロファイルについて繰り返します。

4

2 に答える 2

2

@Michael-O コメントへの回答を見て、maven assembly plugin各プロファイルに設定されたシステム プロパティに従ってアーティファクトの最終的な名前を作成するように構成することをお勧めします。例えば:

<build>    
  <plugins>
    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
      <execution>
        <id>create jar according to profile</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
        <configuration>
          <finalName>${project.artifactId}-${project.version}_${profile}</finalName>
          <appendAssemblyId>false</appendAssemblyId>
        </configuration>
      </execution>
    </executions>
  </plugin>
 </plugins>
</build>

${profile} は、各プロファイルで異なる値に設定されたプロパティである必要があります (これを行うには、この質問を参照してください)。現在ビルドに使用されているプロファイルを取得する変数があるかどうかはわかりませんが、それは別の質問になります:)

于 2012-10-21T14:17:06.573 に答える
1

JAR を再アセンブルする必要はありません。むしろ標準のメカニズムを使用したいと思います。jar プラグインでアーティファクトの分類子を指定するだけです。

それ以外の場合は、特定のプロパティ ファイルでプロパティをフィルター処理し、それをアプリで読み取ります。これは私がすることですsystem.env=prod|test|localdev

于 2012-10-21T19:08:12.727 に答える