目的に合わせてMaven プロファイルを使用できます。
modules
親プロジェクトでは、必要なすべてのモジュールを提供するセクションをオーバーライドするプロファイルを定義できます。このようなプロファイルはデフォルトでアクティブになるため、予想される動作に変更はありません。
ただし、modules
通常の POM のセクション (プロファイル外) は空になります。反対のことはできないことに注意してください (そのほうが理にかなっています): 試してみただけでうまくいきませんでした。
したがって、そのようなサンプル POM は次のようになります。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>test3</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
</modules>
<profiles>
<profile>
<id>aggregator</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>..\test</module>
<module>..\test2</module>
</modules>
</profile>
</profiles>
実行中:
mvn clean install
Maven はまた、プロファイルをアクティブ化し、アグリゲーターのビルドを期待どおりに実行します。したがって、回帰はありません。
ただし、実行時:
mvn clean install -P!aggregator
Maven は上記のプロファイルを非アクティブ化し、モジュールなしでリアクター ビルドを実行し、必要に応じて親のみを実行します。
残念なことに、逆のアプローチ (空のモジュールを含むプロファイル) は私のテストでは機能しませんでしたが、このアプローチによって目標を達成するための十分なヒントが得られるはずです。
更新Maven 3.2.1以降で利用可能なこの新機能
を実際に使用しています。チケットのコメントから、誰かが同じ質問をしました:
ネストされたモジュールを除外するのはどうですか? 私は新しい機能を試してみましたが、次のように見えます:
1. 最上位モジュールが除外されると、そのネストされたモジュールは除外されません。
2. ネストされたモジュールを直接除外することはできません。
答えは:
ネストされたモジュールは、親モジュールによって除外されません。除外メソッドは包含メソッドを模倣し、そのマッチャーはワイルドカードなどをサポートしていません。そのため、除外をカスケードするには、-amd などの追加のフラグが必要になります。
-plを使用すると、依存関係グラフは次の順序でフィルタリングさ
れ
ます
。フィルタリングが開始される前の最初の依存関係グラフ。