2012-06-29 58 views
16

当我尝试构建站点时,我当前正面临以下Maven 3问题。我会很感激你对此的帮助。不可解析的父POM:构建Maven 3项目站点时

MVN清洁部位

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

首先这里是配置:

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 

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

聚集项目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> 

A项目的POM:

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

B项目的POM:

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> 

这里就是我运行“命令mvn干净的网站”的文件夹结构:

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

父POM是成功部署到NEXUS库的mvn clean site执行之前与下面的命令mvn deploy -DaltDeploymentRepository=snapshots::default::http://MyServer:8081/nexus/content/repositories/snapshots

最后是问题本身:

当我在运行mvn clean site后立即成功构建了parent-pom站点。如果我从本地存储库(〜/ .m2/repository)删除文件夹(包含其内容)“my”(它包含父文件夹),然后尝试使用mvn clean site构建该网站,开始。实际上,Maven从NEXUS下载父类。我比较了部署之后生成的下载文件和文件,并且已经意识到很少有文件丢失,例如接近“0.1-SNAPSHOT”文件夹的maven-metadata-local.xml。

因此,当我试图从詹金斯运行网站建设工作时,我得到了上述错误,因为父POM没有从詹金斯运行的机器部署。

我怎么能想出这个问题或我做错了什么?

谢谢。

+0

我会删除模块的relativePath条目,导致它是空的,所以它不需要你可以增强图片的文件夹结构您的父pom位于何处?为什么父pom和聚合pom是不同的? – khmarbaise

+2

强制maven从存储库下载父POM,而不是在结构中查找它。显示警告是因为它开始认为父母在../pom.xml中,这不是真的。关于聚合和继承,可以有不同的父级和聚合POM,下面是链接:[Aggregation vs Inheritance ](http://maven.apache.org/pom.html#Inheritance_v) – tgrigoryan

+0

我知道可能有不同的聚合器和pa但它使生活变得不容易。 – khmarbaise

回答

2

你的问题不在你的pom文件中。当我构建你的聚合-pom时,Maven通常从远程仓库中下载父仓库(在我从本地仓库中删除之后)。

试试这个:

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

此外,你可以做一些清理:

  • 从所有的人都卸下<relativePath/>
  • 从projA和ProjB删除<version>0.1-SNAPSHOT</version><groupId>my.com</groupId>(他们继承来自母公司)
4

正如this answer指出的那样,网站插件中有a bug,它只查找它认为是Maven中心的依赖关系。

我在Maven 3.0.4和站点插件3.3中遇到同样的问题。我也有这个问题,它在运行Windows 7的开发计算机上工作,但不在运行Debian上的Jenkins的CI-Server上。

1

我得到了同样的问题......在我的开发人员MacBook上工作,但在运行mvn site时使用maven-site-plugin:3.7在我的RHEL7上运行的Jenkins上失败。我没有测试降级网站插件。

我找到了另一种解决方案。我的问题是maven-project-info-reports-plugin,特别是目标dependencies。如果我跳过目标-Dmpir.skip=true我的网站得到的生成(没有依赖关系:(报告)。

相关问题