5

何度も質問されましたが、解決策が見つかりませんでした。モジュールの子モジュールも無効にする方法!?!

例: プロジェクト BB と CC およびそれらの子モジュールも無効にしたい

A
|-AA
|  |--AAA
|-BB
|  |-BBB
|-CC
   |-CCC

しかし、これを実行すると

mvn -pl \!AA,\!BB clean install

BBB と CCC も実行されていることがわかります。こちらはほんの一例です。約100のプロジェクトを持つマルチモジュールプロジェクトがあります...すべてのプロジェクトをリストしたくはありません。親だけです。これは可能ですか?

ありがとうございました

4

1 に答える 1

3

目的に合わせて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を使用すると、依存関係グラフは次の順序でフィルタリングさ れ
ます 。フィルタリングが開始される前の最初の依存関係グラフ。


于 2016-01-20T10:28:42.607 に答える