maven-2 - 安装构建工件而不再次运行构建

标签 maven-2 jenkins maven-install-plugin

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

  1. mvn clean install(针对整个项目)
  2. mvn package -PCI(用于 M2,配置文件收集所有依赖项,包括 M1 jar)
  3. 将构建工件和依赖项复制到不同的机器以创建 stub
  4. 创建 stub
  5. 用包含 stub 的版本覆盖 M2 构建工件
  6. mvn 安装:安装(对于 M2)

在运行最终安装时,它会爆炸:

[信息] [安装:安装{执行:默认cli}]
[信息]-------------------------------------------- --------------------------
[错误] 构建错误
[信息]-------------------------------------------- --------------------------
[信息] 此项目的打包未将文件分配给构建工件
[信息]-------------------------------------------- --------------------------

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

然后,除了 Maven 集成的自动存档功能之外,我还配置了 Jenkins 作业以使用构建后选项显式存档我的服务客户端 jar。结果是,我为 Jenkins 作业归档了服务客户端 jar。一个是项目级别(带 stub 的所需版本),一个是 M2(无 stub )。当然部署了没有 stub 的版本。

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

最佳答案

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

关于maven-2 - 安装构建工件而不再次运行构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6445437/

相关文章:

maven-2 - Nexus + Maven + Hudson 的发布问题

eclipse - 在 Eclipse 中作为 maven 安装运行时如何更改 jar 输出目录?

java - Jenkins [错误] 此环境中未提供编译器

Maven 构建在 Jenkins 上失败,但可以在本地计算机上运行

java - Maven 安装传递依赖

java - 为什么在maven周期的install阶段,也会调用package阶段?

maven-2 - 使用 maven 创建文档

svn - 使用 Maven 执行 build.xml

testing - TestNG surefire,使用 maven 命令行运行套件

jenkins - 如何在 Jenkins 中使用配置即代码插件配置 config-file-provider 文件