对于我的一个 Jenkins 构建,我有一个相当复杂的构建工作流程。该项目包含两个模块。模块 M1 构建服务,模块 M2 构建服务客户端。M1 依赖于 M2(不要问我为什么)。M2 需要从 M1 中的 ejb 创建的存根。因此,我们处于循环依赖关系中,我试图通过以下构建顺序来规避它。
- mvn clean install(用于整个项目)
- mvn package -PCI(用于带有配置文件的 M2 以收集所有依赖项,包括 M1 jar)
- 将构建工件和依赖项复制到不同的机器以创建存根
- 创建存根
- 使用包含存根的版本覆盖 M2 构建工件
- mvn install:install(用于 M2)
运行最终安装时,它会爆炸:
[INFO] [install:install {execution: default-cli}]
[INFO] -------------------------------- ----------------------------------------
[错误] 构建错误
[信息] -- -------------------------------------------------- --------------------
[INFO] 此项目的打包未将文件分配给构建工件
[INFO] ---------- -------------------------------------------------- ------------
所以我想出了这个想法,因为我已经使用了 Jenkins,并且无论如何我都在部署到我们的快照目录,所以我没有什么可担心的,我可以省略本地部署,因为它无论如何都会从快照存储库中提取新版本。结果是,Jenkins 在运行安装后归档了该作业的工件。由于我没有运行最终安装,因此部署了没有存根的版本(我相信从第 2 步开始)。
然后,我将 Jenkins 作业配置为使用 post build 选项显式归档我的服务客户端 jar,以及 maven 集成的自动归档功能。结果是,我为 Jenkins 工作存档了服务客户端 jar。一种是项目级别(带有存根的所需版本),另一种是 M2(无存根)。当然,部署了没有存根的版本。
知道如何在不改变项目结构的情况下摆脱这种困境。只要开发人员的愿望仍然得到满足,我就可以将东西添加到 pom 文件中。Jenkins 的工作是我的领域。