Maven:解決できない親POM


101

Mavenプロジェクトを1つのシェルプロジェクトと4つの子モジュールとして設定しています。シェルをビルドしようとしたとき。私は得ます:

[INFO] Scanning for projects...
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]   
[ERROR] The project module1:1.0_A0 (C:\module1\pom.xml) has 1 error
[ERROR] Non-resolvable parent POM: Failure to find shell:pom:1.0_A0 in http://nyhub1.ny.ssmb.com:8081/nexus/content/repositories/JBoss/ was cached in the local repository, resolution will not be reattempted until the update interval of jboss has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 5, column 11 -> [Help 2]

単独のモジュールを作成しようとすると、同じエラーが発生しますが、module1をそれが使用していたモジュールに置き換えるだけです。

彼ら全員に彼らのポンで親を参照させます。

<parent>
    <artifactId>shell</artifactId>
    <groupId>converter</groupId>
    <version>1.0_A0</version>
</parent>

シェルpomの関連部分は次のとおりです。

<groupId>converter</groupId>
<artifactId>shell</artifactId>
<version>1.0_A0</version>
<packaging>pom</packaging>
<name>shell</name>


<modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
    <module>module4</module>
</modules>

1
誰もが興味を持っている場合は、追加<relativePath>..</relativePath>の下で<parent></parent>私のために働きました。
カプタン

2
これを実行しますmvn install -N & mvn install
Se Song

相対パスは、モジュールの親フォルダにアクセスできることが期待されるpomである場合、「ソリューション」ではなく、非準拠プロジェクト用です。
Rick O'Shea

私の場合は、pom.xmlファイルのタイプミスが原因でした。
Oleksii Kyslytsyn

考えられるすべての問題の要約:stackoverflow.com/a/62704660/6172857
Sumit Badsara

回答:


94

参考までに。

Mavenの喜び。

モジュールの相対パスを../pom.xmlに置くと解決しました。

parent要素はありrelativePathますが、親のディレクトリを指すように必要があることの要素を。デフォルトは..


17
はい。Mavenを使用するには、自分が何をしているのかを知っている必要があります。試行錯誤してもそれほど遠くまでは行きません。一方、いくつかの優れたリファレンスが利用可能です。これは1つです。
Nicola Musatti、2011

6
だからあなたはこれを追加し<relativePath>..</relativePath>ました<parent></parent>か?
オクタビアン2017年

問題を解決するためにしばらく試していただきありがとうございます。から../pom.xmlへの相対パスを使用しました../<parent folder>/pom.xml
Mario Kurzweil 2017

<relativePath>を指定しても、プライベートリポジトリを指している場合は問題を解決する必要はありません。詳細な説明については、トマシュザルスキーの応答を調べてください。
Gi1ber7

私のメインのpomファイルを同じディレクトリ(同じプロジェクト)の別のファイル(テスト用)に拡張しようとしています。しかし、これはこのエラーを解決しません。それを修正する方法はありますか?
Praneeth Peiris

38

またsettings.xml~/.m2/ディレクトリに正しいファイルを置くことで修正できます。


3
まさにそれで私の問題は解決しました、ありがとう!!! しかし、それをいくつかのディレクトリに置くのではなく、[設定]-[Maven]-[ユーザー設定]でEclipseを指すようにします。

私の問題も解決しました。念の設定が適切に設定されていることを確認する必要がありますmaven.repo。..あまりにも
サラン

21

親のアーティファクトがpom.xml、通常はプライベートリポジトリからアクセスできないリポジトリからのものである可能性もあります。解決策は、そのリポジトリをpom.xml次の場所に提供することでした。

<repositories>
    <repository>
        <id>internal-repo</id>
        <name>internal repository</name>
        <url>https://my/private/repo</url>
        <layout>default</layout>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

私の場合、Eclipseのために問題はさらに複雑になりました。リポジトリは特別なプロファイル(<profiles><profile><id>activate-private-repo</id><repositories>...)でのみアクティブであり、EclipseのMaven GUIではこのプロファイルをCtrl+Alt+Pショートカットで設定できませんでした。

解決策は、一時的にプロファイル外でリポジトリを(無条件に)宣言し、Alt+F5Maven更新プロジェクトを起動し、プロファイルをアクティブ化して、リポジトリ宣言をプロファイルに戻すことでした。これはEclipseのバグであり、Mavenのバグではありません。


同じ状況です。プライベートリポジトリがpomに追加されていません。
LoranceChen

4

解決できない親POM:これは、親リポジトリを解決できないことを意味します。

デバッグモードで実行:

[DEBUG] Reading global settings from **/usr/local/Cellar/maven/3.5.4/libexec/conf/settings.xml**
[DEBUG] **Reading user settings from /Users/username/.m2/settings.xml**
[DEBUG] Reading global toolchains from /usr/local/Cellar/maven/3.5.4/libexec/conf/toolchains.xml
[DEBUG] Reading user toolchains from /Users/username/.m2/toolchains.xml
[DEBUG] Using local repository at /Users/username/.m2/repository
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/username/.m2/repository
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:

なぜなら親レポはMaven Centralの一部ではないからです。解決策は〜m2 /でsetting.xmlを指定して、親POMを作成することです。/Users/username/.m2/settings.xml

そのXMLでは、リポジトリ情報を指定する必要がある場合があります。


驚くばかり !設定xmlに私のリポジトリの詳細を追加するとうまくいきました。しかし、なぜそれはpom xml(同じrepoが追加されている)から取得しないのですか?
smilyface

3

追加するだけ<relativePath />で、pomの親は次のようになります。

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath />
    </parent>

2
これは、親が同じdir構造にない場合、つまりリモートリポジトリにある場合にのみ適用されます。
OndraŽižka19年

2

子POMに正しい値があるかどうかを確認します

GroupId
ArtefactId
Version

たとえばEclipseでは、次のように検索できます。 Eclipse:親pomを検索


2

<relativePath>

子プロジェクトの下でビルドする場合は<relativePath>、親pomを解決するのに役立ちます。

親pomをインストールする

ただし、そのフォルダーから子プロジェクトをビルドした場合、 <relativePath>機能しません。あなたはできるinstallあなたのローカルリポジトリへの親ポンポンまず、子プロジェクトをビルドします。


1

1.0_A0を$ {project.version}に置き換えます

mvnを1回実行します。これにより、必要なすべてのリポジトリがダウンロードされます。このステップの後で1.0_A0に戻すことができます。


これは、必要な親POMがサブモジュールのPOMと同じバージョンである場合にのみ機能します。これは常にそうであるとは限りません。
Gerold Broser

0

私の仕事でも同様の問題がありました。

依存関係なしで親プロジェクトをビルドすると、.m2フォルダーにparent_project.pomファイルが作成されます。

次に、親POMに子モジュールを追加して、Mavenビルドを実行します。

<modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
    <module>module4</module>
</modules>

0

依存関係を追加

pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.8.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.4.3</version>
</dependency>

0

私は非常に長い試行の後に私にその問題を解決しました、ローカルの子モジュールファイルディレクトリに「parent_pom.xml」という名前の別のファイルを作成し、リモートにあるparent_pom.xmlの内容を新しく作成した「parent_pom.xml」に貼り付けました」それは私のために働いて、エラーメッセージは消えました。


0

相対パスタグの内側は次のようにします

<relative>{project_name}/pom.xml</relative>

次にRunAs-> Mavenビルド

それは私のために働いた。


-2

2つのreactorビルドpom.xmlファイルに同じArtefactIdがあるという問題がありました。


私の場合、この親モジュールは親フォルダーにありませんでした。子モジュール<relativePath> ../ parent-module-dir </ relativePath>を追加する必要がありました
Rolintocour
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.