我正在为詹金斯(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项目是不可能的,因为其中有很多,我必须实现的功能来自不同的利益相关者。
khmarbaise是正确的。
你需要更改POM。
如果该文件应该是SNAPSHOT的一部分,则它必须是Maven构建的一部分。
如果它与构建无关,则最好将其放置在其他位置。
看来,唯一的解决方案是仅针对发行版上传它。我已经这样做了,对于发行版来说,它可以正常工作。
如果我是您,我会考虑这些文件。如果它们属于该版本,则尝试更改该版本(即使它需要更改很多位置,您也可以使用例如父POM),如果不是,则可能是另一个更适合这些文件的位置。将文件附加到构建之外的构建似乎不正确。
我和您有相同的看法,但是目前无法实现。