2012-05-01 5 views
6

私はmaven-assembly-pluginを使用して依存関係のある実行可能なモノリシックなjarをビルドしています。また、リソースフィルタリングを使用してカスタム、レーン固有の(dev、stage、prodなど)プロパティを設定しています。アセンブリプラグインにMavenプロファイル名を組み込みました(依存関係あり)jar

jarのfinalNameには、レーン名(dev、stage、prodなど)を含めるにはどうすればよいですか?

私は、次のMVNは、次のようになり瓶をもたらすようにコマンドたい:

  • -P DEVインストールMVNクリーン - > WS-クライアントDEV.jar
  • インストールMVNきれいに-P STAGE - > WS-クライアントSTAGE.jar
  • MVNクリーン-P PRODをインストール - > WS-クライアントPROD.jar

私は見つけることができませんどこかMavenのプロパティがありますか?可能であれば、冗長コマンドライン引数を使用しないようにしたいと思います(つまり、 'mvn clean install -P DEV -Dlane = DEV')。 <ビルド>タグの後

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2.2</version> 
    <executions> 
     <execution> 
      <id>jar-with-dependencies</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     <finalName>ws-client</finalName> 
     <appendAssemblyId>false</appendAssemblyId> 
     <archive> 
      <manifest> 
       <mainClass>Example</mainClass> 
      </manifest> 
     </archive> 
    </configuration> 
</plugin> 

答えて

9

Bhaskarに似ていますが、わずかに変更されています。

<ビルド>タグの後、

<finalName>${project.artifactId}-${lane}</finalName> 

あなたはプロファイルのプロパティとして車線値を設定することができます追加します。 MVN ... -P DEV(例えばMVNクリーン-P DEVをインストール)の答えのための

+0

ファンタスティック、美しく仕上げました! – chadmaughan

+0

finalNameは、現在の実行のターゲットフォルダに格納されている成果物でのみ、展開された成果物では機能しません。 – khmarbaise

+0

@khmarbaise - 正しい。この特定の用途では、jarファイルはリポジトリの外部に配布されています(私は理想的ではありません)。 "mavenless"の消費者はクラスパス上のjarファイルを見て、どのレーンとプロパティを使用しているかを知ることができるように、視覚的な表示が必要でした。 – chadmaughan

2

<finalName>${project.artifactId}-${lane}</finalName> 

を追加して、例えば、プロファイル名に「レーン」のenv変数を設定します。

は、ここに私のアセンブリのプラグインの設定です

MVN -P DEV -Dlane = DEVなど

それとも、もう少し創造性とMaven - Can I reference profile id in profile definition?

EDIT ------

ここで説明するように、アクティブなプロファイルのIDを発見することができます

冗長な引数を避けたい場合。

なぜ、envを使用して対応するプロファイルをトリガーしないのですか?プロパティ。コマンドライン

mvn -Dlane=DEV|STAGE|PROD 

とポンポン

<profile> 
    <id>DEV</id> 
    <activation> 
    <property> 
     <name>lane</name> 
     <value>DEV</value> 
    </property> 
    </activation> 
    <build> 
    // rest of the profile 
</profile> 

、ステージとPRODプロファイルの同じでは上のように

+0

感謝を:あなたが言うように

<profiles> <profile> <id>DEV</id> <properties> <lane>DEV</lane> </properties> </profile> </profiles> 

次にビルドを実行します。可能であれば、冗長なコマンドライン引数を使用しないようにしたいと思いました(これを反映するように質問を更新しました)。あなたの提供されたリンクは面白いです。 mvnプロパティを介してコマンドラインで指定された(アクティブな)プロファイルを参照する方法に関するアイデアはありますか? – chadmaughan

+0

冗長性を回避する方法の詳細について編集しました –

関連する問題