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

How to add a single file to an existing snapshot timestamp version in Sonatype Nexus

我正在为 Jenkins 开发一个 CI/CD 管道,它被各种项目使用。所有项目都使用 Maven 并将其快照和发布版本部署到给定的工件存储库。

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

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

─┬─ 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 项目是不可能的,因为它们中有很多,我必须实现的功能来自不同的利益相关者。

khmarbaise 是对的。

您需要更改 POM。

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

如果与构建无关,你最好把它放在其他地方。