web-dev-qa-db-ja.com

Maven:解決できない親POM

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を置き換えただけで同じエラーが発生します。

それらすべてにPOMの親を参照させます。

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

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

<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>
80
Will

参照用です。

Mavenの喜び。

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

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

75
Will

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

28
user1747134

別の理由は、親アーティファクトが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+F5 Maven更新プロジェクトを起動し、プロファイルをアクティブにして、リポジトリ宣言をプロファイルに戻すことでした。これは、Mavenのバグではなく、Eclipseのバグです。

12

解決できない親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では、リポジトリ情報を指定する必要がある場合があります。

3
Wu Yongchao

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

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

<relativePath>

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

親ポンをインストールする

ただし、子プロジェクトをそのフォルダーからビルドすると、<relativePath>は機能しません。最初にローカルリポジトリにinstall親pomを作成してから、子プロジェクトをビルドできます。

1
Hawk

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

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

1

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

GroupId
ArtefactId
Version

たとえば、Eclipseでは、検索できます。 Eclipse: search parent pom

1
cane

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

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

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

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