maven - 使用maven发布流程跨平台同步 Artifact 版本

标签 maven maven-release-plugin multiplatform

我有一个应该为多个目标平台构建的 Artifact :

  • Linux x86
  • Windows x86
  • ARM11

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

换句话说,目标是在存储库中拥有这样的东西

  • 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
  • ...

但这不是我想要的。

我可以

  1. 在 Linux 上运行

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

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

  2. 然后在 Windows 上运行

    mvn 发布:准备发布:执行

    (这会增加版本号)

但是,以正确的顺序在各个平台上触发发布流程的责任就落在了我身上。 maven 有办法帮助我解决这个问题吗?

你有什么建议吗?

谢谢

<小时/> PS。请注意,这不是一个关于如何组织成模块的问题。这是关于如何同步单个 Artifact 在多个平台上的发布过程。

最佳答案

您找到解决方案了吗? 很高兴知道我不是唯一一个与 Maven 抗争的人:-)

无论如何,

您是否可以将发布版本部署到 Nexus? 我想,你可以这样做:

1 - 从 Windows 计算机执行“mvn release:prepare release:perform” - 应该将artifact-1.0.1-windows.zip 放入nexus。

2 - 从源代码管理中 checkout artifact-1.0.1标签

3 - 从linux和arm11(无论是什么:P)执行“mvn部署” - 这也应该将-linux.zip和-arm11.zip放入nexus中。

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

关于maven - 使用maven发布流程跨平台同步 Artifact 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10028361/

相关文章:

java - mvn release :prepare 上的 Maven 发布插件错误

c++ - C/C++ - 计算函数调用中的参数

javascript - 自动滚动的移动网页

java - 带有像样的 gui 工具包的跨平台编程语言?

android - Gradle 不包括已发布的 pom.xml 中的依赖项

java - 使用 Maven 将 InstallerListener 添加到 IzPack 安装程序项目

java - Maven发布插件和scm插件配置

java - 如何使 scala-maven-plugin 查看由 maven-compiler-plugin 编译的类?

java - 对 http ://repo1. maven.org/maven2/的请求返回 501 HTTPS 必需状态和正文

带有 Svn :Externals and a multi-module project 的 Maven 发布插件