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

使用maven发布过程跨平台同步工件版本

郜彦
2023-03-14

我有一个工件,应该为几个目标平台构建:

  • Linux x86

不幸的是,由于缺乏交叉编译器,不可能一次性创建工件的所有版本。

换句话说,目标是在存储库中有这样的内容

  • artifact-1.0.0-linux.zip
  • artifact-1.0.0-windows.zip
  • artifact-1.0.0-arm11.zip
  • artifact-1.0.1-linux.zip
  • artifact-1.0.1-windows.zip
  • artifact-1.0.1-arm11.zip
  • ...

请注意,这些版本是同步的。如何做到这一点?

问题是发布过程升级了pom的版本。每次生成后使用xml。因此,通过在各种平台上连续构建,我可以实现

  • artifact-1.0.0-linux.zip
  • artifact-1.0.1-windows.zip
  • artifact-1.0.2-arm11.zip
  • artifact-1.0.3-linux.zip
  • artifact-1.0.4-windows.zip
  • artifact-1.0.5-arm11.zip
  • ...

但这不是我想要的。

我可以

>

mvn发布:准备发布:执行-DpushChanges=false

(pushChanges设置为false release不会增加SCM中的版本号)

然后在Windows上运行

mvn发布:准备发布:执行

(这将增加版本号)

但是,在不同平台上以适当的顺序触发发布过程的责任在于我。maven有什么方法可以帮助我做到这一点吗?

你有什么建议吗?

谢谢

注意,这不是一个关于如何组织成模块的问题。它是关于如何在多个平台上同步单个工件的发布过程。

共有3个答案

万俟浩
2023-03-14

你帮我解决了你的问题...我不知道pushChange=false选项。

使用Jenkins,您可以在每个平台上设置一个作业,使用“远程触发构建(例如,从脚本)”功能以系列方式执行maven发布。如果需要,可以使用参数化构建来选择要构建的版本(如果使用该版本,则需要参数化触发器插件来触发其他平台上的构建)。

公良子轩
2023-03-14

如我所见,您使用分类器(工件的文件名后缀),如linux、windows或arm11,来区分各种工件的版本,这些版本是针对特定平台的。因此,如果您创建由Maven管理的多模块项目,其中模块将是具有相同的组ID、相同的工件ID、相同的版本(可能继承自它们的共同父级),但不同的分类器的工件,您将得到您想要的。在这种情况下,您总是发布多模块POM(通常它也是其模块的常见父级),以便同时发布所有模块。假设所有模块策略的版本相同(此处似乎非常适合),您基本上可以执行:

mvn发布:准备发布:执行-DautoVersionSub模块

就这样。您将获得发布的artifact-1.0.0-linux.zipartifact-1.0.0-windows.zipartifact-1.0.0-arm11.zip工件。下一个开发版本将为所有模块设置为1.0.1-SNAPSHOT(通过从父模块继承)。

涂玉韵
2023-03-14

你找到解决办法了吗?很高兴知道我不是唯一一个和马文打架的人:-)

无论如何

你可以将正式版本部署到nexus吗?我在想,你可以这样做:

1-从windows机器上执行“mvn发布:准备发布:执行”-这应该得到artifact-1.0.1-windows。打开nexus。

2-从源代码管理签出artifact-1.0.1标记

3-从linux和arm11做一个“mvn部署”(不管是什么: P)-这也应该让-linux.zip和-arm11.zip进入nexus。

不过,我相信,根据nexus的配置方式,它不会让您用相同的GAV重新部署任何内容(即使分类器不同)

 类似资料:
  • 发布到 Web 平台 安装配置原生开发环境 打包发布原生平台 原生平台 JavaScript 调试 发布到支付宝小游戏 发布到微信小游戏 微信小游戏开放数据域 启用微信小游戏引擎插件 接入微信 PC 小游戏 发布到趣头条小游戏 发布到百度小游戏 百度小游戏开放数据域 发布到 Facebook Instant Games 发布到 Google Play Instant 发布到 OPPO 小游戏 发布

  • 如果Maven大师社区可以帮助我完成以下任务,那就太好了。 我想以一种发布过程以批处理模式运行的方式(不需要从控制台询问任何问题)自动化哈德逊中Maven模块的发布过程。目前我使用常见步骤发布:准备 在准备步骤中: 对于与当前模块和父模块的匹配的所有依赖项,请将替换为正式版本(例如)。 发布后的某些时间: 对于与当前模块和父模块的组ID匹配的所有依赖项,请将发布版本替换为快照版本(例如,版本:使用

  • 我正在使用maven发布插件进行发布管理。我运行mvn release:prepare on release分支。这样做的结果是,我有一个带有发布版本的git标记,以及带有下一个开发快照版本的发布分支。 现在,我想改变这个过程,以便发布分支总是有正式版本(没有SNAPSHOT版本的碰撞)。 这样做的原因是在生成构建时,我希望发布分支和发布标签具有相同的HEAD提交。 如果我可以跳过碰撞版本的最后一

  • 所有POM都有作为它们的版本,也在dependencies标签下。它通过上传到Nexus repo。 我们最近开始做。因此,所有20个父POM现在都是和版本,因为它们都位于nexus中。所有标记现在都指向 开发人员不想指向发布版本。他们需要来自同行的edge开发版本,不管它是否不稳定。 SCM只希望指向版本,因为他必须每周执行一次,但由于指向快照版本而失败。 现在我知道了版本插件,但问题是,我应该

  • 多平台支持 Mpx支持在多个小程序平台中进行增强,目前支持的小程序平台包括微信,支付宝,百度,qq和头条,不过自2.0版本后,Mpx支持了以微信增强语法为base的跨平台输出,实现了一套业务源码在多端输出运行的能力,大大提升了多小程序平台业务的开发效率,详情可以查看template增强特性 不同平台上的模板增强指令按照平台的指令风格进行设计,文档和代码示例为了方便统一采用微信小程序下的书写方式。

  • 我们在maven发行版和maven版本插件上有一个问题。在詹金斯,我们想做释放自动按下一个按钮。为了消除快照依赖关系,我们希望使用maven versions插件。假设我们有两个项目A(最新版本0.0.1,最新快照0.0.2-快照)和项目B,它们依赖于Projecta-0.0.2-快照,我们希望发布项目B,我们如何将项目Bs依赖项升级到最新可用的发布版本?maven versions插件目标“us