2012-02-29 21 views
91

子モジュールを構築することなく、親POMをインストールします。このような構造で、私はMavenプロジェクト内の親POMを持って

   parent 
       | 
     --------------- 
     |    | 
     child1  child2 

は、私ができるように、ローカルREPOに「親」のPOMをインストールしたいですchild1私はdependencyManagementで行った変更を行いますが、"child2"が壊れてビルドされないため、通常の「クリーンインストール」はできません。

これは、親pomに行き、"child2"モジュールにコメントする以外に、mavenでこれを行う適切な方法です。

答えて

136

mvnコマンドで '-N'オプションを使用します。

mvn -hから:

-N、 - 非再帰的なサブプロジェクトに再帰しないでください

+1

'-N'または '--non-recursive'オプションは、サブプロジェクトに再帰しないことを意味します。 –

25

ギョームは確かに右であり、それが正しいオプションですが、私は個人的に推薦しますあなたの親を別のモジュールとして保つ。

私は次のように継承するための最良のアプローチ見つける:

aggregator 
|- module1/ (extends parent) 
| |- pom.xml 
|- module2/ (extends parent) 
| |- pom.xml 
|- parent/ 
| |- pom.xml 
|- pom.xml 

あなたは常に余分なオプションなしmvn clean installで、親のみをインストールすることができますこの方法を。

アグリゲータの外に親を持つことで、より多くのプロジェクト間で親を再利用することもできます。

親と集約者を別々のものにすることは、多くのメリットがあります。しかし、最終的には、プロジェクト/環境に最適なものを選択します。

+0

私はこの問題に数時間苦労し、apache sling、JackRabbit、Artifactoryなど、いくつかのプロジェクトがこのようになっていることがわかりました。 – accuya

+0

バッチビルディング(子モジュール)からMavenモジュールの継承(依存関係、プロパティなど)を分離しました。 –

+3

これはベストプラクティスと見なされますか?どのようなブログや他のアプローチですか? – ArtB

関連する問題