Will
Will

Reputation: 8631

Maven: Non-resolvable parent POM

I have my maven project setup as 1 shell projects and 4 children modules. When I try to build the shell. I get:

[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]

If I try to build a lone module I get the same error only replace module1, with whatever module it was.

Have them all referencing the parent in their poms.

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

Here is the relevant parts of the shell 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>

Upvotes: 158

Views: 632467

Answers (23)

ArtOfWarfare
ArtOfWarfare

Reputation: 21478

This error occurred for me after I refactored a project, moving what had been the root module and using spring-boot-starter-parent as its parent to instead making it a child of a new root module.

In my case, I just needed to remove <relativePath/> from the parent section of the former-root-now-child module.

Upvotes: 2

Will
Will

Reputation: 8631

Just for reference.

The joys of Maven.

In the pom.xml of the child modules, setting the relative path of the to ../pom.xml solved it.

The parent element has a relativePath element that you need to point to the directory of the parent. It defaults to ..

<parent>
    <artifactId>shell</artifactId>
    <groupId>converter</groupId>
    <version>1.0_A0</version>
    <relativePath>..</relativePath>   <!-- THIS -->
</parent>

Upvotes: 137

Asraful
Asraful

Reputation: 1290

Based on your directory structure, relative path will fix this problem.

Let us consider we have two module and assume directory structure as :

   - example-project
      - example-app-backend
        - pom.xml
      - example-app-frontend
        - pom.xml
      - pom.xml

Module 1 : (project/example-app-backend/pom.xml)

 <parent>
        <groupId>com.example</groupId>
        <artifactId>example-app-backend</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
 </parent>

Module 2 : (project/example-app-frontend/pom.xml)

 <parent>
        <groupId>com.example</groupId>
        <artifactId>example-app-frontend</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
 </parent>

Project :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>

      <!-- replace with your project related ...-->

        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.13</version>
        <relativePath/> <!-- lookup parent from repository -->
        
      <!-- replace with your project related ...-->

    </parent>

    <groupId>com.example</groupId>
    <artifactId>demo-application</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Maven multi module setup</name>

    <modules>
        <module>example-app-backend</module>
        <module>example-app-frontend</module>
    </modules>
    <properties>
       <!-- replace with your project related ...-->
    </properties>

</project>

Upvotes: 0

Kalyani Aher
Kalyani Aher

Reputation: 1

I have changed my internet to mobile network and update maven repo. Including setting of download javadoc something from preferences->maven and it worked for me.

Upvotes: 0

Tobia
Tobia

Reputation: 36

In my case, moving the correct settings.xml file in the "conf" folder of the maven installation folder has solved the problem.

Upvotes: 1

ashish_varghese
ashish_varghese

Reputation: 1

I encountered a similar problem.

Project build error: Non-resolvable parent POM for com.in28minutes.microservices:limits-service:0.0.1-SNAPSHOT: org.springframework.boot:spring-boot-starter-parent:pom:3.2.0-M3 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. 
This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced and 'parent.relativePath' points at no local POM

I tried many things and eventually decided to manually verify if the 3.2.0-M3 dependency is present in repo - https://repo.maven.apache.org/maven2 . Turns out it wasn't. I switched the dependency to 3.1.4 which I found was present on the repo. This solved my issue.

Upvotes: 0

Ben
Ben

Reputation: 318

I had this issue, the version of the parent pom.xml was not the same as the child's ones after an upgrade.

I Fixed it by setting the same version number for the parent and it's childs.

Upvotes: 0

Prasanth Pennepalli
Prasanth Pennepalli

Reputation: 1058

Replace <version>1.0_A0</version> with <version>${project.version}</version>

Run mvn once. This will download all the required repositories. You may switch back to 1.0_A0 after this step.

Upvotes: 2

Valeriy Emelyanov
Valeriy Emelyanov

Reputation: 371

In addition to the answer by Luke Willis, looks like this:

<parent>
    <groupId>com.example</groupId>
    <artifactId>some-module</artifactId>
    <version>1.0</version>
    <relativePath>../pom.xml</relativePath>
</parent>

Upvotes: 4

Balu
Balu

Reputation: 691

In this case the parent artifact is not found. As others pointed out, adding <relativePath/> to the pom where you reference a parent that cannot be found locally may work. But why does it work?

If the parent POM is not located in the parent folder, we need to use the relativePath tag to refer to the location. ... To skip the local file search and directly search the parent POM in Maven repositories, we need to explicitly set the relativePath to an empty value

as they explained here.

In other cases it will not work because the real reason is that Maven is unable to find the settings.xml which specifies the repositories to check for the parent artifact. E.g. when you try to build your Maven project from WSL2 (Linux shell on Windows) where you have not set up your Maven configuration.

In that case you need to create the settings.xml in the .m2 directory of WSL2 or create a reference to it, e.g. via a symbolic link. (That is a different issue but could be solved like this.)

Upvotes: 3

vladk
vladk

Reputation: 29

I had the following config in the parent pom:

  <properties>
    <revision>1.0-SNAPSHOT</revision>
  </properties>

  <groupId>com.company.org</groupId>
  <artifactId>api-reactor-pom</artifactId>
  <version>$revision</version>
  <packaging>pom</packaging>

And I was getting 'Non-resolvable parent POM' error. I changed version to <version>1.0-SNAPSHOT</version>, and it's gone.

Apache Maven 3.6.3.

Upvotes: 2

Ninad Pingale
Ninad Pingale

Reputation: 7069

It was fixed when I removed settings.xml from .m2 folder.

Upvotes: 3

Sanket Dhumal
Sanket Dhumal

Reputation: 1

Inside relative path tag do as follows

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

and then RunAs-> Maven build

It worked for me.

Upvotes: 0

Ozan Apaydın
Ozan Apaydın

Reputation: 33

I solved that problem on me after a very long try, I created another file named "parent_pom.xml" in child module file directory at local and pasted contents of parent_pom.xml,which is located at remote, to newly created "parent_pom.xml". It worked for me and error message has gone.

Upvotes: 0

Shiva Perumalsamy
Shiva Perumalsamy

Reputation: 24

Add a Dependency in

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>

Upvotes: -2

Hawk
Hawk

Reputation: 907

<relativePath>

If you build under a child project, then <relativePath> can help you resolve the parent pom.

install parent pom

But if you build the child project out of its folder, <relativePath> doesn't work. You can install the parent pom into your local repository first, then build the child project.

Upvotes: 5

Wu Yongchao
Wu Yongchao

Reputation: 71

Non-resolvable parent POM: This means you cannot resolve the parent repo.

Trun on debug mode:

[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:

Because the parent repo is not part of the maven central. The solution is specify a setting.xml in ~m2/ to help result the parent POM. /Users/username/.m2/settings.xml

In that XML, you might need to specify the repository information.

Upvotes: 7

stakowerflol
stakowerflol

Reputation: 1079

Just add <relativePath /> so the parent in pom should look like:

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

Upvotes: 9

benez
benez

Reputation: 2001

I had the issue that two reactor build pom.xml files had the same artefactId.

Upvotes: -2

Prabhu
Prabhu

Reputation: 36

I had similar problem at my work.

Building the parent project without dependency created parent_project.pom file in the .m2 folder.

Then add the child module in the parent POM and run Maven build.

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

Upvotes: 1

user1747134
user1747134

Reputation: 2472

It can also be fixed by putting the correct settings.xml file into the ~/.m2/ directory.

Upvotes: 61

cane
cane

Reputation: 1017

verify if You have correct values in child POMs

GroupId
ArtefactId
Version

In Eclipse, for example, You can search for it: Eclipse: search parent pom

Upvotes: 2

Alternative reason also might be the parent artifact comes from repository which is not accessible from pom.xml, typically private repository. The solution was to provide that repository in 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>

In my case the problem was even more complicated due to Eclipse: the repository was active only in special profile (<profiles><profile><id>activate-private-repo</id><repositories>...) and Maven GUI in Eclipse didn't allow to set this profile through Ctrl+Alt+P shortcut.

The solution was to temporarily declare repository outside profile (unconditionally), launch Alt+F5 Maven Update Project, activate profile and put repository declaration back into profile. This is rather Eclipse bug, not Maven bug.

Upvotes: 29

Related Questions