2016-12-13 7 views
0

私は、異なるプラットフォームをプロファイルするjarファイルを持っています。差異(異なる依存関係と依存関係の異なるバージョンを含む)は、プロファイルを使用して処理されます。私は、プラットフォームA用にビルドする場合 メイヴンプロファイルをフラットにする方法は?

<profiles> 
    <profile> 
     <id>PlatformA</id> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
     </activation> 
     <dependencies> 
      <dependency> 
       <groupId>commons-lang</groupId> 
       <artifactId>commons-lang</artifactId> 
       <version>2.5</version> 
      </dependency> 
     </dependencies> 
    </profile> 
</profiles> 
<profiles> 
    <profile> 
     <id>PlatformB</id> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
     </activation> 
     <dependencies> 
      <dependency> 
       <groupId>commons-lang</groupId> 
       <artifactId>commons-lang</artifactId> 
       <version>2.6</version> 
      </dependency> 
     </dependencies> 
    </profile> 
</profiles> 

今の問題は、ある、インストールPOMは変更されません。つまり、jarファイルがサービスとして使用されている場合、-PPlatformAを使用してプロファイルPlatformA(またはPlatformB)をアクティブにする必要があります。それ以外の場合、依存関係は処理されません。

フラットプロファイルのコンテンツをpomに挿入し、フラットフォームをインストールする方法はありますか?つまり、-PPlatformAを使ってjarをビルドすると、インストールされたpomにはプロファイルのものはなく、PlatformAのコンテンツをpomにマージするだけです。

答えて

0

AFAIKプロファイル設定を「隠す」可能性はありません。

しかし、あなたは依存関係依存関係のバージョンを定義するのではなく、定義するためのプロパティを使用するときには、自分のプロファイルを短縮することができます。

<profiles> 
    <profile> 
     <id>PlatformA</id> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
     </activation> 
     <commons-lang.version>2.5</commons-lang.version> 
    </profile> 
    <profile> 
     <id>PlatformA</id> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
     </activation> 
     <commons-lang.version>2.6</commons-lang.version> 
    </profile> 
</profiles> 

<dependencies> 
     <dependency> 
      <groupId>commons-lang</groupId> 
      <artifactId>commons-lang</artifactId> 
      <version>${commons-lang.version}</version> 
     </dependency> 
</dependencies> 

を、異なるため、建物のアーティファクトに役立つプラグインがありますプロファイルを使用しないプラットフォームbuilding for multiple environmentsを見てください。

+0

問題は、サービスがjarを使用する場合、サービスは正しいプロファイルをアクティブにするためにmvnコマンドラインにプロファイル部分を追加する必要があることです。 – DeepNightTwo

+0

あなたは何を意味するのか分かりません。 jarは "サービス"の実行時(プロダクションモード)でビルドされていますか? 「サービス」とは何ですか? – JimHawkins

関連する問題