Mavent 3.0.3に移行した後、いくつかのプロジェクトの親POMは解決できなくなりました。
プロジェクトはデフォルトの方法で構成されているため、parent.relativePathを「../pom.xml」に設定します
superpom (located in repository)
|-rootpom (located locally: no error)
|-|-parentpom (located locally: error resolving parent)
|-|-|-module1 (located locally: error resolving parent)
|-|-|-module2 (located locally: error resolving parent)
|-|-|-module3 (located locally: error resolving parent)
|-|-|-module4 (located locally: error resolving parent)
エラー...
MyGroup:myArtifactId:1.0の解決不可能な親POM: http://myRepo.net/archiva/repository/maven2 でmyGroup:myParentArtifactId:1.0を見つけられなかったため、ローカルリポジトリにキャッシュされました。 maven2の更新間隔が経過するか、更新が強制され、「parent.relativePath」が間違ったローカルPOM @ myGroup:myParentArtifactId:1.0、C:\ myProjectDir\parent\pom.xml、行x、列yを指すまで、再試行しないでください- > [ヘルプ2]
...リポジトリでpomが検索されたことを示しているようです。
Settings.xmlで複数のリポジトリが定義されている場合、maven3が混乱する可能性があることを読みましたが、ローカルではなくリポジトリ内のpomを検索するときは常にそうでした。
update
これまでは、親プロジェクトレベル(parentpom)でmavenビルドを実行していました。maven2が今まで正常に完了していたため、重要なことは知りませんでした。
Maven3を使用する場合、これは重要なようです。ルートプロジェクトレベル(rootpom)でmaven3を実行すると、ビルドは正常に終了します。それで私の差し迫った問題は解決されました。
私は自分の質問に必ずしも答えたくないので、誰かがmaven3が現在このように動作する理由、または古いアプローチが間違っていた理由を説明できるかもしれません。
子ポンで参照するバージョンが親ポンで参照しているバージョンと同じであることを必ず確認してください。私にとっては、親のバージョンを3.1.0.0-RELEASEに変更しましたが、子のポンムでは、relativePathを使用して以前のバージョンを参照し、2.0.0.0-SNAPSHOTとして定義していました。親ディレクトリだけを含めたり、ディレクトリに「pom.xml」を追加しても、違いはありませんでした。
<parent>
<artifactId>eric-project-parent</artifactId>
<groupId>com.eric.common</groupId>
<!-- Should be 3.1.0.0-RELEASE -->
<version>2.0.0.0-SNAPSHOT</version>
<relativePath>
../../EricParentAsset/projects/eric-project-parent</relativePath>
</parent>
質問に対する answer です。
デフォルトでは、mavenはrelativePath
を探すために_../pom.xml
_を探します。代わりに空の_<relativePath/>
_タグを使用してください。
'parent.relativePath'が間違ったローカルPOM @ myGroup:myParentArtifactId:1.0を指しているC:\ myProjectDir\parent\pom.xml
これは、mavenが親のpomをローカルで検索したが、それが正しいpomではないことを発見したことを示しています。
parentpom
のpom.xml
は、parent
pomをrootpom
のpom.xml
として正しく定義していますか?rootpom
フォルダーにはparetpom
フォルダーだけでなくpom.xml
も含まれていますか?同じ問題がありました。私のプロジェクトのレイアウトは次のように見えました
\---super
\---thirdparty
+---mod1-root
| +---mod1-linux32
| \---mod1-win32
\---mod2-root
+---mod2-linux32
\---mod2-win32
私の場合、modX-root-levelでpom.xmlに間違いがありました。 mod1-rootツリーをコピーし、mod2-rootという名前を付けました。すべてのpom.xmlを適切に更新したと誤って思っていました。しかし、実際には、mod2-root/pom.xmlにはmod1-root/pom.xmlと同じグループおよびアーティファクトIDがありました。 mod2-rootのpom.xmlを修正してmod2-root固有のMaven座標を持つようにした後、私の問題は解決しました。
モジュールが親のすぐ下にある場合は、親からのモジュールの深さに基づいて、相対パスを確認する必要があります。次に、モジュールに相対パスを配置します。./pom.xml
2レベル下の場合は../../pom.xml
Http.HttpWagon $ __ sisu1:がある場合はログを確認してください。「basicAuthScope」もこのエラーまたは警告を見つけられない場合は、エラーを解決するmaven 3.2.5バージョンを使用する必要があります。
<parent>
<groupId>com.test.vaquar.khan</groupId>
<artifactId>vk-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../projectname/pom.xml</relativePath>
</parent>
親に次の行を追加します
<relativePath>../projectname/pom.xml</relativePath>
Nexsusで利用できないローカルの親pomから構築している場合は、ネクサスにpomを追加し、このパスは不要です。
私にとっては、親の「グループID」と「アーティファクトID」を二重にチェックすると機能します。これは、私の場合は間違っていて、それが問題でした。