3

对于我的一个 Jenkins 构建,我有一个相当复杂的构建工作流程。该项目包含两个模块。模块 M1 构建服务,模块 M2 构建服务客户端。M1 依赖于 M2(不要问我为什么)。M2 需要从 M1 中的 ejb 创建的存根。因此,我们处于循环依赖关系中,我试图通过以下构建顺序来规避它。

  1. mvn clean install(用于整个项目)
  2. mvn package -PCI(用于带有配置文件的 M2 以收集所有依赖项,包括 M1 jar)
  3. 将构建工件和依赖项复制到不同的机器以创建存根
  4. 创建存根
  5. 使用包含存根的版本覆盖 M2 构建工件
  6. 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 的工作是我的领域。

4

1 回答 1

0

听起来你需要重组。是否可以将客户端中的服务器->客户端依赖关系分解为一个单独的 jar,并将对客户端的依赖关系更改为对这个新 jar 的依赖关系?

于 2011-06-28T14:59:59.350 回答