当前位置: 首页 > 知识库问答 >
问题:

Jenkins/Maven多模块带子模块构建,版本构建失败

魏书
2023-03-14

我有一个Jenkins/Maven/Git多模块项目,其中包含一个子模块(由承包商开发,没有什么可以改变它)。由于Git和子模块,我必须使用命令“Git Clone-recursive ssh://xxxxxxx.Git”在Linux中克隆repo。

这意味着我必须检查Jenkins Git插件选项“Advanced sub-modules Behavious”和“recursivy update submodules”,以便填充所有模块(否则子模块保持为空)。

所以我或多或少有这种类型的配置:

    ParentDir
        Module 1
            pom.xml
        Module 2
            pom.xml
        ...
        Module n
            pom.xml
        Submodule
            pom.xml
        pom.xml
    

一切都在詹金斯建立正常的建设(“MVN清洁安装”)。只有当试图构建发布版本时才会发生问题

子模块被设置为特定的版本-3.3.3-snapshot,并且不能更改。依赖于该子模块的其他模块的依赖项设置为3.3.3-Snapshot版本。不幸的是,当命令:

mvn release:prepare-dreleaseversion=0.1.2-test-ddevelopmentversion=1.0.1-snapshot

时,Jenkins会修改项目中每个模块中的所有pom文件,包括子模块。此时,当maven尝试构建时,没有子模块版本0.1.2-test,一切都消失了。当我将Jenkins留下的文件与我们存储库中的文件进行比较时,我看到:

>/opt/tools/bin/git diff pom.xml | cat
diff --git a/pom.xml b/pom.xml
index 5e4cc3c..2ac2db6 100644
--- a/pom.xml
+++ b/pom.xml
      <artifactId>workingLib</artifactId>
 -      <version>3.3.3-SNAPSHOT</version>
 +      <version>0.1.2-test</version>
      <packaging>pom</packaging>

有没有办法告诉Jenkins/Maven不要更新子模块,而是更新所有其他模块?
谢谢,
Kevin

共有1个答案

司马项明
2023-03-14

父POM中的所有模块共享一个版本号。如果一个模块遵循一个不同的发布周期/不在您的控制之下,不要使其成为一个模块。自行构建和发布它,并将其作为依赖项包含在内。

不要试图处理Maven的约定--这些工具不能很好地支持这些约定,您将遇到一些问题。

 类似资料:
  • 问题内容: 我有一个多模块Maven项目,其中有多个微服务作为模块,因此我的父母中列出了一些模块,如下所示: 这里是依赖项,因此我在下面列出了依赖项 : 当我在本地运行时,按预期方式在被调用之前,但是在詹金斯中,它正在尝试构建然后使构建失败说: 我是否需要运行其他作业或重新排序模块,从本地到Jenkins有什么不同?感谢对此的任何帮助。 问题答案: 众所周知,问题在于子模块之间的依赖关系失败,因为

  • 嗨我在网上搜了一遍,看了一堆文章,所以问题和文档都找不到解决办法,这里是我的问题。 我有一个多模块maven项目,其中包含三个模块a、B和C,a和B独立,C依赖于a和B,当然我有一个父项目。我还设置了一个jenkins服务器来构建这些项目,以及一个nexus存储库。 如有任何帮助,不胜感激。谢谢!

  • 问题内容: 我在Jenkins中建立了一个大型Maven多模块构建。它是为增量构建而设置的。 触发后,它将解析所有POM并弄清楚需要构建什么。 当前已将其设置为触发SCM更改。 我想进行此构建,以便可以执行以下操作: 仍然手动启动它。当我这样做时,它的增量构建行为将像今天一样起作用。 从Subversion提交钩子触发构建 。我想知道,如果我通过出色的指令来设置提交挂钩的麻烦,那将不会导致构建过程

  • 我将转向maven多模块构建。 我的项目结构如下所示: 是一个Maven Eclipse项目,由M2E构建。 我添加了MyProject-Core/src/main/java作为Eclipse源文件夹,但由于我将父pom中的依赖项部分更改为dependencyManagement,因此我从Eclipse中得到了构建错误。手动调用mvn包仍然可以正常工作。 如何配置Eclipse以正确解决核心pom

  • 模块标记 coolie-cli 的模块构建方式应该是比较特殊的一类,与 webpack 一样,都是另辟蹊径。 webpack:依赖模块放到数组里,数组索引值就是模块 ID。 coolie-cli:依赖模块全局标记 ID(三十六进制)。 coolie-cli 可以将长长的物理路径压缩成最短的字符,达到压缩率最大化,而不是将模块直接合并。 // module1.js define(function(r

  • 我的项目结构如下: 是内的依赖项。 > 我应该在Jenkins中创建单独的作业来单独构建每个模块吗? 我为创建了一个作业,但出现以下错误(已将目标和操作设置为“清洁安装”: [INFO]扫描项目...[INFO] [INFO] ------------------------------------------------------------------------ [INFO]构建mypro