Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Non-resolvable parent POM: When building Maven 3 Project Site

I am currently facing the following problem with Maven 3 when I am trying to build the site. I will appreciate you help on this.

mvn clean site

..........
[INFO] Reactor Summary:
[INFO] 
[INFO] Project A ......................................... SUCCESS [15.383s]
[INFO] Project B ......................................... SUCCESS [2.232s]
[INFO] My Site ........................................... FAILURE [0.105s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 24.769s
[INFO] Finished at: Fri Jun 29 14:26:04 AMT 2012
[INFO] Final Memory: 18M/150M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.1:site (default-site) on project site: SiteToolException: Unable to read local module-POM: 1 problem was encountered while building the effective model for my.com:projA:0.1-SNAPSHOT
[ERROR] [FATAL] Non-resolvable parent POM: Could not find artifact my.com:parent-pom:pom:0.1-SNAPSHOT and 'parent.relativePath' points at no local POM @ line 12, column 13
[ERROR] for project my.com:projA:0.1-SNAPSHOT
.............

First here is the configuration:

Apache Maven 3.0.4 (r1232337; 2012-01-17 12:44:56+0400)
Java version: 1.7.0_04, vendor: Oracle Corporation
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.7.4", arch: "x86_64", family: "mac"
Nexus repository: 2.0.6

The parent POM:

<modelVersion>4.0.0</modelVersion>

<name>Parent POM</name>
<groupId>my.com</groupId>
<artifactId>parent-pom</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>pom</packaging>

<build>                         
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.1</version>  
                <configuration>
                    <reportPlugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-project-info-reports-plugin</artifactId>
                            <version>2.4</version>
                        </plugin>            
                    </reportPlugins>
                </configuration>
            </plugin>              
        </plugins>
    </pluginManagement>      
</build>

The aggregation project pom:

<modelVersion>4.0.0</modelVersion>

<name>My Site</name>
<groupId>my.com</groupId>
<artifactId>site</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>pom</packaging>

<parent>
    <groupId>my.com</groupId>
    <artifactId>parent-pom</artifactId>
    <version>0.1-SNAPSHOT</version>
    <relativePath/>
</parent>

<modules>

    <module>projA</module>
    <module>projB</module>

</modules> 

The pom of Project A:

<modelVersion>4.0.0</modelVersion>

<name>Project A</name>
<groupId>my.com</groupId>
<artifactId>projA</artifactId>
<version>0.1-SNAPSHOT</version>

<parent>
    <groupId>my.com</groupId>
    <artifactId>parent-pom</artifactId>
    <version>0.1-SNAPSHOT</version>
    <relativePath/>        
</parent>

The pom of Project B:

4.0.0

<name>Project B</name>
<groupId>my.com</groupId>
<artifactId>projB</artifactId>
<version>0.1-SNAPSHOT</version>

<parent>
    <groupId>my.com</groupId>
    <artifactId>parent-pom</artifactId>
    <version>0.1-SNAPSHOT</version>
    <relativePath/>        
</parent> 

Here is the structure of the folder where I run "mvn clean site":

./pom.xml  (aggregation project)
./projA/pom.xml (Project A)
./projB/pom.xml (Project B)

parent-pom is successfully deployed to NEXUS repository before the execution of mvn clean site with following command mvn deploy -DaltDeploymentRepository=snapshots::default::http://MyServer:8081/nexus/content/repositories/snapshots

And finally the problem itself:

When I run mvn clean site right after the deployment of parent-pom site is built successfully. If I delete the folder (with its content) "my" (it contains the parent-pom) from the local repository (~/.m2/repository) and then try to build the site with mvn clean site I am getting the error described at the beginning. Actually Maven downloads the parent-pom from the NEXUS. I have compared the downloaded files and files which have been generated after the deployment and have realized that few are missing, for instance maven-metadata-local.xml near to "0.1-SNAPSHOT" folder.

So when I am trying to run the site building job from Jenkins I am getting the error described above, because the parent-pom is not deployed from the machine where Jenkins run.

How can I come up with this problem or what I did wrong?

Thank you.

like image 361
tgrigoryan Avatar asked Jun 29 '12 11:06

tgrigoryan


People also ask

Why am I getting error at parent tag in POM XML?

Just go to Project Tab on Eclipse and Select Clean. Then Eclipse will automatically remove the Maven Dependencies and re-build your project. By then, the error may be gone.

Where does Maven look for parent pom?

By default, Maven looks for the parent POM first at project's root, then the local repository, and lastly in the remote repository. If parent POM file is not located in any other place, then you can use code tag. This relative path shall be relative to project root.

What is parent in POM XML?

A parent pom. xml file (or super POM) in Maven is used to structure the project in order to avoid redundancies and duplicate configurations by using an inheritance between different pom. xml files. If any dependency or properties are configured in both - parent and child - pom.


2 Answers

As pointed out by this answer, there is a bug in the site plugin, which only looks for dependencies in what it thinks is Maven central.

I am having the same problem in Maven 3.0.4 and site-plugin 3.3 . I also have the issue that it works in my development machine which is running Windows 7, but not in the CI-Server which is running Jenkins on Debian.

like image 132
AdrianRM Avatar answered Oct 21 '22 04:10

AdrianRM


The problem is not in your pom files. When I built your aggregation-pom, Maven downloaded normally the parent-pom from the remote repo (after I deleted from my local repo).

Try this:

mvn -U clean install site dependency:purge-local-repository

Additionally, you could do some clean up:

  • remove <relativePath/> from all of them
  • remove <version>0.1-SNAPSHOT</version> and <groupId>my.com</groupId> from projA and ProjB (they are inherited from the parent)
like image 3
cahen Avatar answered Oct 21 '22 05:10

cahen