我有一个应该为多个目标平台构建的 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
- ...
但这不是我想要的。
我可以
在 Linux 上运行
mvn 发布:准备发布:执行 -DpushChanges=false
(pushChanges 设置为 false 发布不会增加 SCM 中的版本号)
然后在 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/