Maven プロジェクトへの参照を追加する<parent>
と、「その親からすべての構成を取得し、それをモデルに注入してから、次のようにオーバーライドします」と言っています。
したがって、Maven がプロジェクトのモデルを構築するには、Maven が親自体を取得する必要があります。つまり、タグを追加する<parent>
と、親と子の間に明示的な強い依存関係が作成されます。
良いニュースは、Inheritance が Aggregation に従う必要がないことです。それは正確にはどういう意味ですか?
集計は<modules>
、pom にリストするときです。これは、reactor (つまり、Maven がビルドする一連のプロジェクト) に次の (サブ) プロジェクトも含める必要があることを Maven に伝えます。
継承は、プロジェクトの<parent>
.
Maven は、プロジェクト<parent>
がその子を としてリストする必要<modules>
があることを強制しません。また、Maven は、<modules>
プロジェクトがプロジェクトを としてリストする必要があることを強制しません<parent>
。
一部の人々はそのようにプロジェクトを設定します
ROOT/
+- pom.xml
+- parent/
| \- pom.xml
+- api/
| \- pom.xml
\- packaging/
\- pom.xml
の親であり、ROOT
実際には の子です。または、親のないスタンドアロン プロジェクトになる場合もあります [実際、これは私自身がよく使用するパターンです。いくつかの関連プロジェクトに取り組んでいるときは、ローカル ディスクに集約を投げて、それを IDE で開きます。これにより、実際のモジュールが異なるソースから来ている場合でも、すべての関連コードを 1 つの「プロジェクト」として利用できます。 ]api
packaging
ROOT
ROOT
pom.xml
したがって、あなたの場合、解決策は<parent>
「API」モジュールからタグを削除することです。
今!欠点があります。「API」モジュールからタグを削除する<parent>
と、親プロジェクトが提供しているすべてのデフォルトが削除されるため、「API」プロジェクトに関連するデフォルトをコピーする必要があります。そうしないと、動作に微妙な変化が見られる場合があります。 . たとえば、プラグインのバージョンのピン留めと<dependencyManagement>
、「API」の依存関係に関連するものは確実にコピーする必要があります。他にもコピーしなければならない部分がありますが、タグをmvn help:effective-pom
削除する前後にMaven コマンドを使用して、効果的な違いを確認することをお勧めします。<parent>