首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不可解决的父POM:当构建Maven 3项目站点时

不可解决的父POM:当构建Maven 3项目站点时
EN

Stack Overflow用户
提问于 2012-06-29 11:09:55
回答 3查看 17.5K关注 0票数 16

当我试图构建站点时,我目前正面临Maven 3的以下问题。我很感激你在这方面的帮助。

mvn洁净场地

代码语言:javascript
复制
..........
[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
.............

首先是配置:

代码语言:javascript
复制
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:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
<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> 

项目的pom:

代码语言:javascript
复制
<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

代码语言:javascript
复制
<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干净站点“的文件夹的结构:

代码语言:javascript
复制
./pom.xml  (aggregation project)
./projA/pom.xml (Project A)
./projB/pom.xml (Project B)

在执行mvn clean site之前,使用以下命令mvn deploy -DaltDeploymentRepository=snapshots::default::http://MyServer:8081/nexus/content/repositories/snapshots成功地将父-pom部署到NEXUS存储库

和问题本身:

当我在成功构建父-pom站点部署后立即运行mvn clean site时。如果我从本地存储库(~/.m2/ mvn clean site )中删除文件夹(及其内容) "my“(它包含父-pom),然后尝试使用构建站点,我将得到在开始时描述的错误。实际上,Maven从NEXUS下载父-pom。我对部署后生成的下载文件和文件进行了比较,并意识到缺少的文件很少,例如maven-元数据-local.xml靠近“0.1快照”文件夹。

因此,当我试图从Jenkins运行站点构建作业时,我会得到上面描述的错误,因为父-pom不是从Jenkins运行的机器上部署的。

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

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2013-07-30 12:48:33

正如这个答案所指出的,站点插件中有臭虫,它只查找它认为是Maven中心的部分中的依赖项。

我在Maven 3.0.4和sit-plugin3.3中也有同样的问题。我也有一个问题,那就是它在我运行Windows 7的开发机器上工作,而不是在在Debian上运行Jenkins的CI-Server中工作。

票数 4
EN

Stack Overflow用户

发布于 2013-04-26 20:51:54

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

试试这个:

代码语言:javascript
复制
mvn -U clean install site dependency:purge-local-repository

此外,您还可以进行一些清理:

  • 从它们中删除<relativePath/>
  • <version>0.1-SNAPSHOT</version>和ProjB中删除projA和ProjB(它们是从父级继承的)
票数 3
EN

Stack Overflow用户

发布于 2018-01-25 23:18:38

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

我找到了另一个解决办法。在我的例子中,问题是maven-project-info-reports-plugin,特别是目标dependencies。如果我跳过了-Dmpir.skip=true的目标,我的站点就会生成(没有依赖项:(报告)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11260717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档