如何解决从单独的构建作业部署特定于平台的 Maven 快照
我有一个 Maven 项目,它为三个平台输出特定于平台的工件:Linux、Windows 和 MacOS。我通过将 OS/arch 组合放入分类器来实现这一点,即 win-amd64、mac-x86_64、linux-amd64。
工件必须构建在它们相关的平台上,即 Windows 工件只能在 Windows 机器上生成,依此类推。所以我有单独的 Jenkins 作业运行 Maven 构建,每个平台一个。这一切都适用于部署和下载版本,但不幸的是,其他想要使用这些工件快照的构建无法使用 1.0.0-SNAPSHOT
之类的版本来访问它们。他们必须使用完整的时间戳和内部版本号。
问题在于,由于构建具有不同的构建编号和时间戳,因此每次部署时都会重写 maven-metadata.xml,并且仅引用最新的 SNAPSHOT。这基本上是最慢的构建获胜的比赛。存储库中 maven-metadata.xml 的顶部如下所示:
<version>1.1.0-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20210303.091119</timestamp>
<buildNumber>18</buildNumber>
</snapshot>
<lastUpdated>20210303091134</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<classifier>linux-amd64</classifier>
<extension>tar.gz</extension>
<value>1.1.0-20210303.085348-16</value>
<updated>20210303085348</updated>
</snapshotVersion>
<snapshotVersion>
<classifier>win-amd64</classifier>
<extension>zip</extension>
<value>1.1.0-20210303.090821-17</value>
<updated>20210303090821</updated>
</snapshotVersion>
<snapshotVersion>
<classifier>mac-x86_64</classifier>
<extension>tar.gz</extension>
<value>1.1.0-20210303.091119-18</value>
<updated>20210303091119</updated>
</snapshotVersion>
...
快照版本是指仅存在于 MacOS 工件的时间戳和内部版本号。所以我可以获取工件 <groupId>:<artifactId>:1.1.0-SNAPSHOT:mac-x86_64
但我无法获取 <groupId>:<artifactId>:1.1.0-SNAPSHOT:linux-amd64
。
部署存储库是一个 Artifactory 服务器。
我不知道这是 Artifactory 或 maven-deploy-plugin 的问题,还是我只是在做一些愚蠢的事情。是否有更好的方法来处理来自多个构建的平台特定工件的部署?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。