【问题标题】:How to make Maven install submodule poms?如何让 Maven 安装子模块 pom?
【发布时间】:2012-12-19 18:08:25
【问题描述】:

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

我有一个顶级聚合器 pom,它指定了几个模块,但这个 pom 不是任何模块的父级。我确实使用了父 pom,但这些父母位于依赖它们的子模块的对等子模块中,并且我在所有 pom 中都有空白的“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:未能在 http://hostname.net:8081/nexus/content/groups/stuff 中找到 com.example.cde:project-parent:pom:1.0.0 已缓存在本地存储库中,解决方法将直到 nexus 的更新间隔过去或强制更新并且'parent.relativePath' 指向没有本地 POM @ 第 6 行第 11 列 -> [帮助 2]

之前不会重新尝试

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

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

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

我一定误解了使用子模块构建如何工作的一个重要细节。我错过了什么?

【问题讨论】:

    标签: maven-3 nexus


    【解决方案1】:

    使用强制更新选项运行 maven 全新安装,如下所示:

    mvn 全新安装 -U

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2015-11-15
          • 2021-07-18
          • 2010-12-31
          • 2020-04-26
          • 2012-04-27
          • 1970-01-01
          • 2013-02-23
          • 2020-06-27
          • 1970-01-01
          相关资源
          最近更新 更多