我们有一个项目,我使用ant
和ivy
将工件上传到nexus
存储库。很长一段时间以来,事情一直很顺利,但现在我们必须两次部署相同的工件(因为我们正在为windows和mac生成相同的产品)。应用程序的代码是相同的,只是更改了包装。我已经将部署过程配置为使用maven分类器。问题是,上传是从两台不同的机器上完成的,因为每台机器都有适合目标平台的构建环境。
所以,第一次部署完成了,它上传了:
- 我的产品-1.0.pom
- myproduct-1.0-mac.zip
当我尝试部署windows工件时,它将部署
- 我的产品-1.0.pom
- myproduct-1.0-win32.msi
它失败是因为存储库策略不允许重新部署(而且应该保持这种状态),所以尝试为相同的工件和版本部署新的pom文件失败,即使pom内容相同。
此外,未来我们可能会遇到类似的问题,在不同的机器上部署相同产品和版本但不同分类器的各种工件,但构建过程不同。
如果在使用pom部署分类工件时,如果存储库中已经存在相同的pom文件,那么是否可以告诉nexus不要失败?如果不可能的话,我知道用不同的分类器部署各种工件的唯一方法是同时部署它们。这是真的吗?
最后,我创建了一个只部署pom而不部署任何分类器的任务,并修改了windows&mac工件只部署包而不部署pom:
- 部署没有分类器的pom
- 使用分类器部署mac工件
- 使用分类器部署win证书(win32)
Nexus在没有部署pom文件的情况下部署工件时不会抱怨,而我认为我会抱怨。
我觉得这是一个肮脏的把戏,但它有效:)