Warm tip: This article is reproduced from serverfault.com, please click

maven-如何在Sonatype Nexus中将单个文件添加到现有快照时间戳版本中

(maven - How to add a single file to an existing snapshot timestamp version in Sonatype Nexus)

发布于 2020-12-21 17:57:08

我正在为詹金斯(Jenkins)建立CI / CD管道,该管道被各种项目使用。所有项目都使用Maven并将其快照和发行版部署到给定的Artifact存储库。

在管道中,我还创建了一个文件,并使用mvn deploy:deploy-file相同的快照版本(例如1.2.3-SNAPSHOT)将其部署到使用的存储库中。因此,该项目的实际部署是在创建新的带有时间戳的快照版本之前完成的。

在使用的存储库中,它看起来像这样:

─┬─ my-artifact
 │  ├─ 1.2.3-SNAPSHOT
 │  ├─ 1.2.3-SNAPSHOT-20201215.123453-1
 │  │  └ ...
 │  ├─ 1.2.3-SNAPSHOT-20201215.123463-2
 │  │  ├─ my-artifact-1.2.3-SNAPSHOT-20201215.123463-2.jar
 │  │  ├─ my-artifact-1.2.3-SNAPSHOT-20201215.123463-2.jar.md5
 │  │  ├─ my-artifact-1.2.3-SNAPSHOT-20201215.123463-2.jar.sha1
 │  │  ├─ my-artifact-1.2.3-SNAPSHOT-20201215.123463-2.pom
 │  │  ├─ my-artifact-1.2.3-SNAPSHOT-20201215.123463-2.pom.md5
 │  │  └─ my-artifact-1.2.3-SNAPSHOT-20201215.123463-2.pom.sha1
 │  └── 1.2.3-SNAPSHOT-20201215.123473-3
 │      ├─ my-artifact-1.2.3-SNAPSHOT-20201215.123473-3-cyclonedx.xml
 │      ├─ my-artifact-1.2.3-SNAPSHOT-20201215.123473-3-cyclonedx.xml.md5
 │      └─ my-artifact-1.2.3-SNAPSHOT-20201215.123473-3-cyclonedx.xml.sha1

如你所见,1.2.3-SNAPSHOT-20201215.123473-3由我的管道代码上传的快照版本的内容与以前的版本完全不同。任何要求最新快照版本的Maven项目都将找不到jar文件,因为最新快照仅包含XML文档。

有没有一种部署方式,或者更好的说法是,将工件附加到现有的带有时间戳的快照版本?恐怕不是,但是在选择完全不同的方法之前,我想验证一下自己的想法。

在管道中,除了修改Maven项目的POM之外,我可以做所有事情。更改Maven项目是不可能的,因为其中有很多,我必须实现的功能来自不同的利益相关者。

Questioner
Oliver
Viewed
11
J Fabian Meier 2020-12-22 03:31:24

khmarbaise是正确的。

你需要更改POM。

如果该文件应该是SNAPSHOT的一部分,则它必须是Maven构建的一部分。

如果它与构建无关,则最好将其放置在其他位置。