如何让Maven安装子模块poms?

时间:2012-12-19 18:08:25

标签: maven-3 nexus

我的笔记本电脑上有一个正在建设的项目。今天我开始在Bamboo服务器上为此设置构建。一切都已签入。我的笔记本电脑和构建服务器都使用Maven 3.0.4。

我有一个指定多个模块的顶级聚合器pom,但是这个pom不是任何模块的父级。我确实使用父poms,但是这些父节点位于依赖于它们的子模块的对等子模块中,并且我在所有poms中都有空白的“relativePath”元素。

在顶级聚合器POM的Bamboo构建中,我看到了几个这样的错误:

[错误]项目com.example.cde:java-project-parent:1.0.1(/volatile/bamboo/bamboo3.4.3_data/xml-data/build-dir/FOO-BUILD-JOB1/java- project-parent / pom.xml)有1个错误 2012年12月18日16:40:21 [错误]不可解析的父POM:未能找到com.example.cde:http://hostname.net:8081/nexus/content/groups/stuff中的project-parent:pom:1.0.0缓存在本地存储库中,在nexus的更新间隔已经过去或强制更新并且'parent.relativePath'指向没有本地POM @第6行,第11列 - >之前,将不再重新尝试解析。 [帮助2]

“java-project-parent”是父层次结构中的一个poms。

我发现在顶级聚合器pom中运行“mvn install”实际上并没有在子模块中安装工件。当我查看本地仓库时,本地仓库中每个目录中唯一的东西就是“... pom.lastUpdated”这样的文件。实际的POM不存在。

当我让管理员在第一个子模块中手动运行“mvn install”时,实际上将POM安装到本地仓库中。我有一种感觉,如果他手动安装其他两个父母pom,项目的构建依赖于他们三个将构建良好。

我必须误解有关如何使用子模块进行构建的重要细节。我错过了什么?

3 个答案:

答案 0 :(得分:1)

使用强制更新选项运行maven clean install,如下所示:

  

mvn clean install -U

答案 1 :(得分:0)

您的层次结构可能已损坏。您可以在擦除本地存储库后通过在本地计算机中构建它来测试它。很可能你会发现与构建机器上相同的故障。

要修复它,我建议删除所有相对路径元素并调整结构,以便构建工作正常。理想情况下,您甚至可以将纯父项目分解为单独的项目,并将它们发布到您的存储库管理器中,以便任何其他构建从那里获取它们。

答案 2 :(得分:0)

尝试执行mvn -U安装以强制mvn访问您的nexus repo以获取更新的aritfacts 还可以使用-e开关运行mvn以查看详细的错误消息