我正在使用带有Nexus 1.4.0的Maven 2.2。
假设我有这样一个POM结构(带有相应的版本):
parentproj, v1.0.1
- childproj1, v1.0.2
- childproj2, v1.0.7
childproj1和childproj2代表应用程序的不同部分(例如GUI和后端),我希望能够使它们的版本保持独立,以便我可以发布后端的新版本而无需发布GUI的新版本。
现在,要将这个结构部署到Nexus,去parentproj并运行下面的命令会很方便:
mvn deploy -DperformRelease=true
这将把所有构件部署到Nexus的release存储库中。第一次部署时这样做没有问题,但第二次就会遇到问题:假设我更新了childproj1,这样我们现在有以下版本:
parentproj, v1.0.1
- childproj1, v1.0.3
- childproj2, v1.0.7
在这种情况下,Nexus将不允许我从parentproj执行mvn deploy操作,因为它已经有childproj2的1.0.7版本的副本。Nexus会说“资源,非法请求:ID='releases'的仓库不允许更新工件。”这没关系,我不想因错误而更新现有的版本。但我想做的是告诉Maven类似于“仅部署那些版本不存在于发布存储库中的工件”,可能有办法实现吗?还是我必须单独部署每个项目?