我们的项目有一个依赖项,比如
<dependency>
<groupId>apollo.components.cots</groupId>
<artifactId>cots-wfs</artifactId>
</dependency>据我所知,maven2将获得cots的最新神器-wfs,比如2.3-20101111.000000-13
问题是,当我们分支项目时,依赖项保持不变,而当其他开发人员发布新的cots时-wfs比方说2.3-20101222.000000-13不向后兼容,构建就会中断。
我试图避免将代码合并到分支中,这是很痛苦的。
那么,当我分支项目时,我需要做什么来“冻结”所有的依赖项呢?有什么简单的方法可以做到这一点吗?
发布于 2010-09-28 22:46:30
和据我所知,maven2将为cots获得最新的工件-wfs,说
<version>2.3-20101111.000000-13</version>
看起来您使用的是cots-wfs (2.3-SNAPSHOT)的SNAPSHOT依赖项,可能是在dependencyManagement部分中声明的。
问题是,当我们分支项目时,依赖项保持不变,而当其他开发人员发布新的cots-wfs (...)这不是向后兼容的,那么构建就被破坏了。
事实上,这就是为什么您不应该简单地使用SNAPSHOT依赖项来分支工件,发布的工件的构建应该永远是可重现的,而使用SNAPSHOT依赖项可以击败这一点。maven发布插件实际上禁止发布具有SNAPSHOT依赖项的POM。
但是,可以使用versions:lock-snapshots“锁定”SNAPSHOT依赖项,或者更好地使用versions:use-releases使用相应的已发布版本。这实际上就是我们要走的路。
顺便说一句,Maven Release Plugin可能有助于自动化整个过程。
发布于 2010-09-28 20:25:05
当你分支时,从某种意义上说,你是在创建它的一个新版本。提升版本号应该可以解决这个问题。
发布于 2010-09-28 20:39:17
是的,只需将版本标签添加到依赖项即可。如果您不确定当前的版本号是什么,可以运行"mvn help:effective- pom“来查看包含所有当前版本号的pom。
https://stackoverflow.com/questions/3812607
复制相似问题