2016-07-09 7 views
2

私はすべてのプロジェクトをクリーンスレートから構築するために集合POMを作成しようとしています。親プロジェクトと2つのコードプロジェクトがあるとしましょう。これらはすべて異なるソースツリーにあります。親プロジェクトをMavenリアクタビルドに組み込む

親:

<groupId>com.example</groupId> 
<artifactId>parent</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>pom</packaging> 

プロジェクトA:

<parent> 
    <groupId>com.example</groupId> 
    <artifactId>parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <relativePath/> 
</parent> 

<artifactId>project-A</artifactId> 
<packaging>jar</packaging> 

プロジェクトB:私は一緒にこれらのすべてを構築するために別のアグリゲータPOMを作成しようとしている今

<parent> 
    <groupId>com.example</groupId> 
    <artifactId>parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <relativePath/> 
</parent> 

<artifactId>project-B</artifactId> 
<packaging>jar</packaging> 

、ように:

原子炉が2つのコードプロジェクトの <parent>を見つけることができないので、プロジェクトは失敗する。 aggregatorプロジェクトでは、

mvn clean installが失敗する。その理由は明らかです。parentプロジェクトは原子炉の一部であるため、構築の開始時にアーティファクトが存在しません。

この原子炉建屋を建設する方法はありますか?

+0

親がアグリゲーターよりリアクターの一部である場合は意味がありません。ルートレベルの親子モジュールをサブレベルにする必要な構造に基づいてプロジェクトを構造化する必要があります。また、親モジュールにはモジュールエントリが含まれていなければなりません。すべてが動作します。 – khmarbaise

+0

@khmarbaise親は、広範囲の根茎があるので、その内容を変更することはできません。しかし私は自分のプロジェクトを構築する前に、親に何か変更を加えたいと思っています。 – metacubed

答えて

2

あなたの親POMに一部を次のように指定する必要があります。

<modules> 
<module>path/to/parent</module> 
<module>path/to/project-A</module> 
<module>path/to/project-B</module> 
</modules> 
+0

申し訳ありませんが、親pomは全社的なので、私の特定のプロジェクトでは変更できません。 – metacubed

2

あなたが親を作成して必要以上:

pom.xml (inherit from company) 
    +--- project-A 
    +--- project-B 

これは、これらの問題を解決する...

2

あなただけ親はmvn installに一度必要です。

それはあなたのローカルリポジトリにあり、アグリゲータがそれを見つけるでしょう。その時点から原子炉は継承を認識し、常に親を最初に再構築する。

+2

'mvn install -N'は、子モジュールを実行せずに親モジュールだけをインストールします。 – agentgonzo

関連する問題