web-dev-qa-db-ja.com

Maven 3.0.3およびrelativePath表記を使用した解決できない親POM

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が現在このように動作する理由、または古いアプローチが間違っていた理由を説明できるかもしれません。

30
elfwyn

子ポンで参照するバージョンが親ポンで参照しているバージョンと同じであることを必ず確認してください。私にとっては、親のバージョンを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>
34
Eric Manley

質問に対する answer です。

デフォルトでは、mavenはrelativePathを探すために_../pom.xml_を探します。代わりに空の_<relativePath/>_タグを使用してください。

11
Ilya Silvestrov

'parent.relativePath'が間違ったローカルPOM @ myGroup:myParentArtifactId:1.0を指しているC:\ myProjectDir\parent\pom.xml

これは、mavenが親のpomをローカルで検索したが、それが正しいpomではないことを発見したことを示しています。

  • parentpompom.xmlは、parent pomをrootpompom.xmlとして正しく定義していますか?
  • rootpomフォルダーにはparetpomフォルダーだけでなくpom.xmlも含まれていますか?
6
Raghuram

同じ問題がありました。私のプロジェクトのレイアウトは次のように見えました

\---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座標を持つようにした後、私の問題は解決しました。

2
buzz3791

モジュールが親のすぐ下にある場合は、親からのモジュールの深さに基づいて、相対パスを確認する必要があります。次に、モジュールに相対パスを配置します。./pom.xml

2レベル下の場合は../../pom.xml

1
user5371337

Http.HttpWagon $ __ sisu1:がある場合はログを確認してください。「basicAuthScope」もこのエラーまたは警告を見つけられない場合は、エラーを解決するmaven 3.2.5バージョンを使用する必要があります。

0
user5371337
<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を追加し、このパスは不要です。

0
vaquar khan

私にとっては、親の「グループID」と「アーティファクトID」を二重にチェックすると機能します。これは、私の場合は間違っていて、それが問題でした。

0
Manuel Pérez