私の会社は、そのソフトウェアのJavaAPIを使用するプロジェクト管理ソフトウェアのコンパニオン製品を作成しています。彼らは、製品の新しいリリースとともに新しいAPIバージョンをリリースし、バグ修正などのポイントリリースもリリースします。さまざまなバージョンのソフトウェア(ひいてはAPI)を使用するクライアントをサポートする必要があります。不要なコードの重複なしにこれを行うために、各APIバージョンに必要な依存関係を含むプロファイルを製品に定義しました。
「api70」プロファイルをアクティブにしてこの手法を使用して構築された戦争プロジェクトと、戦争の依存関係を引き出すために、pomのタイプでその戦争プロジェクトに依存する別のプロジェクトがあります。問題は、この2番目のプロジェクトをビルドするときに、依存するプロジェクトをビルドするときにmavenコマンドラインで-Papi70を定義しているにもかかわらず、プロファイル固有の依存関係が含まれていないことです。
これを機能させる方法はありますか?
戦争プロジェクトでは:
<!-- API 7.0 profile. -->
<profile>
<id>api70</id>
<dependencies>
<dependency>
<groupId>com.bigcompany</groupId>
<artifactId>integrationlibrary</artifactId>
<version>7.0-a</version>
</dependency>
</dependencies>
<properties>
<apiversion>api70</apiversion>
</properties>
</profile>
依存するプロジェクトでは:
<!-- Depend on war as type=pom for dependency mediation. -->
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>warproject</artifactId>
<version>${warVersion}</version>
<type>pom</type>
</dependency>
依存プロジェクトの構築に使用されるコマンドライン:
mvn -P api70 clean package
結果のビルドには、integrationlibraryまたはその推移的な依存関係は含まれません。