子モジュールを構築せずに親POMをインストールする


115

私はこの構造を持つMavenプロジェクトに親POMを持っています:

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

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

これは、mavenでこれを行う適切な方法です(親pomに移動して「child2」モジュールにコメントする以外)。

回答:


191

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

からmvn -h

-N、-non-recursiveサブプロジェクトに再帰しません


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

36

Guillaumeは確かに正しいのですが、それは正しい選択肢ですが、私は個人的には親を別のモジュールとして保持することをお勧めします。

継承の最善の方法は次のとおりです。

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

この方法では、mvn clean install追加のオプションなしで、常に親のみをインストールできます。

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

親とアグリゲーターを2つの別個のものとして保持することには、多くの利点があります。しかし最終的には、プロジェクト/環境に最適なものを選択します。


1
私はこの問題に何時間も苦労しましたが、Apache Sling、JackRabbit、Artifactoryなど、いくつかのプロジェクトがこの方法で実行していることがわかりました。
accuya 2012

Mavenモジュールの継承(依存関係、プロパティなど)をバッチビルド(子モジュール)から分離しました。
ダニューブセーラー2013

4
これはベストプラクティスと見なされますか?このアプローチについてのブログや他の?
そり

1
@ArtBその間、そのような記事を見つけましたか?
Tomislav Nakic-Alfirevic 2014

4
@MaximilianSchulz:彼らが言うように、完璧な世界はありません...これはそれを行うための1つのオプションにすぎません。
carlspring
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.