【问题标题】:Installing build artifact without running the build again安装构建工件而不再次运行构建
【发布时间】:2011-09-20 16:28:57
【问题描述】:

我的一个 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] 此项目的打包未将文件分配给构建工件
[信息] --------------------------------------------- --------------------------

所以我想出了这个想法,因为我已经使用了 Jenkins,并且无论如何我都在部署到我们的快照目录,所以我没有什么可担心的,我可以省略本地部署,因为它会从快照中提取更新的版本反正回购。结果是,Jenkins 在运行安装后归档了该作业的工件。由于我没有运行最终安装,因此部署了没有存根的版本(我相信从第 2 步开始)。

然后,我将 Jenkins 作业配置为使用 post build 选项显式归档我的服务客户端 jar,以及 maven 集成的自动归档功能。结果是,我为 Jenkins 工作存档了服务客户端 jar。一种是项目级别(带有存根的所需版本),另一种是 M2(无存根)。当然部署了没有存根的版本。

知道如何在不改变项目结构的情况下摆脱这种困境。只要开发人员的愿望仍然得到满足,我就可以将东西添加到 pom 文件中。 Jenkins 的工作是我的领域。

【问题讨论】:

    标签: maven-2 jenkins maven-install-plugin


    【解决方案1】:

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

    【讨论】:

    • 重组,帮不上什么忙。问题是我不想告诉 maven 如何创建存根,所以 Jenkins 需要创建存根。看起来,Jenkins 在创建存根之前存档存根。第 1 步是构建的主要步骤。
    猜你喜欢
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2015-09-20
    • 2011-07-13
    相关资源
    最近更新 更多