2017-04-25 19 views
0

私は、ネストされたプロジェクトを持つ非常に複雑なマルチモジュールMavenプロジェクトを持っています。 は、基本的に、問題は、この構成に簡略化することができる。ファイル上でMavenコマンドを再帰的に実行

Project A 
| pom.xml 
| pomBis.xml 
| 
|---- Project B 
     pom.xml 
     pomBis.xml 
     ---- Project D 
      pom.xml 
     ---- Project E 
      pom.xml 
|---- Project C 
     pom.xml 

プロジェクトのPOMプロジェクトBやモジュールなどCを有しています。 プロジェクトBでは、私はプロジェクトDしか持っていません。 プロジェクトEは毎日コンパイルする必要のない非常に大きなプロジェクトであるため、毎日のビルドから除外されています。

ここでは、のバージョン:update-parentなど、Mavenコマンドを実行します。すべての私のプロジェクトとサブプロジェクトを更新したい。 pom.xmlを使用すると、プロジェクトEは、プロジェクトBのサブモジュールとして宣言されていないため、更新されません。

私は、使用されるカスタムpomBis.xmlを作成することを考えました。しかし、各サブプロジェクトにpomBis.xmlを作成してコマンドを実行すると、のプロジェクトAのpomBis.xmlだけが使用されます。 Mavenが深く進むと、通常のpom.xmlに戻ります。

私が見る唯一の解決策は、プロジェクトAにpomBis.xmlを作成して、すべてのサブモジュールをリストし、すべてのリーフプロジェクトを実際に一覧表示することです。

何か問題がありますか?

+0

プロジェクトCがツリーに2回表示されます。それを修正していただけますか? –

+0

ありがとうございました。 – Maxoudela

+0

構造全体を単一のマルチモジュールビルドとして正しく扱うならば、 'mvn -pl projectToBuild'を使ってビルドされるものを制御することができます。さらに、与えられたprojectToBuildに基づいてビルドされるべきものを定義し、 'mvn -pl projectToBuild --also-make-dependent'を実行します。それ以外にも、Jenkinsのインクリメンタルビルドを使用して、変更されたものだけを構築することができます。 – khmarbaise

答えて

1

Mavenプロファイルが答えです。

プロジェクトA POM:

<pom> 
. 
. 
. 
<modules> 
    <module>B</module> 
    <module>C</module> 
<modules> 
</pom> 

プロジェクトB POM:今

<pom> 
. 
. 
. 
<profiles> 
    <profile> 
     <id>includebeast</id> 
     <modules> 
      <module>E</module> 
     <modules>  
    </profile> 
</profiles> 
<modules> 
    <module>D</module> 
<modules> 
</pom> 

、あなたはMavenのコマンドは、すべてのプロジェクトに影響を与えたい場合、プロファイルをアクティブ "includebeast" など

すべてをコンパイルする例:mvn cleanコンパイル-P include獣

+0

ありがとう、この問題にリンクします:https://stackoverflow.com/questions/10682186/in-maven-can-a -profile-override-the-modules-to-not-include-any デフォルトのモジュールがプロファイルに含まれているためです。私のプロファイルに私のモジュールだけが必要な場合は、私はアクティベーションを使用することができます。 – Maxoudela

関連する問題