添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

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>
                if anyone is interested, adding <relativePath>..</relativePath> under <parent></parent> worked for me.
– kaptan
                Jan 23, 2019 at 1:31
                Relative path is for non-conforming projects not a "solution" when the expectation is a pom in the parent folder of the module should be accessible.
– Rick O'Shea
                Nov 6, 2019 at 23:04
                I tried to install mvn install but terminals says The term 'mvn' is not recognized as the name of a cmdlet, function, script file, or operable program.
– Manghud
                Dec 2, 2020 at 8:39
                Yes. Using Maven requires that you know what you do, trial and error won't get you very far. On the other hand there are several good references available. This is one.
– Nicola Musatti
                Sep 30, 2011 at 15:46
                Thanks I tried it for a while to solve the problem. I took the relative path from ../pom.xml to ../<parent folder>/pom.xml.
– Mario Kurzweil
                Feb 4, 2017 at 19:36
                Putting the <relativePath> would not necessary solve the problem if you are pointing to a private repository. Look down for  Tomáš Záluský response for detail explanation.
– Gi1ber7
                Aug 15, 2018 at 18:50
                I'm trying to extend my main pom file to another one (for tests) in the same directory (same project). But this doesn't solve this error. Any idea how to fix it?
– Praneeth Peiris
                Apr 5, 2019 at 9:26
                Exactly that solved my problem, thanks!!! But not by putting it into some directory, but pointing Eclipse to it in Preferences - Maven - User Settings.
– Brain
                Oct 4, 2017 at 13:44
                Solved my problem too. Just have to make sure the settings are properly configured to maven.repo too..
– Saran
                May 9, 2018 at 0:35

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.

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath />
    </parent>
                This only applies when the parent is not in the same dir structure, i.e. in a remote repository.
– Ondra Žižka
                Aug 11, 2019 at 8:17

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.

Awesome ! Adding my repo details in settings xml worked. But why it's not taking from the pom xml (which has the same repo added in it) ? – smilyface Dec 18, 2018 at 13:25

<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.

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>
  <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.

This was my issue. Looks like a bug to me, but you can't use ${revision} as the version of the parent (even in Maven 3.8.4), and have it resolved locally. – Tony the Tech Mar 6 at 23:46

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.)

This only works if the required parent POM has the same version as the sub-module's POM. This is not always the case. – Gerold Broser Feb 9, 2018 at 20:14

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>
                Your answer, together with <relativePath/> solved the problem for me. *relativePath alone did not.
– Gyro Gearloose
                Sep 2, 2020 at 10:35

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.

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.

In my case, this parent module was not in the parent folder, I had to add in the child module <relativePath>../parent-module-dir</relativePath> – Rolintocour Oct 30, 2018 at 14:01
<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>
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.