首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven依赖项管理

Maven依赖项管理
EN

Stack Overflow用户
提问于 2010-09-28 20:22:23
回答 3查看 674关注 0票数 1

我们的项目有一个依赖项,比如

代码语言:javascript
复制
  <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不向后兼容,构建就会中断。

我试图避免将代码合并到分支中,这是很痛苦的。

那么,当我分支项目时,我需要做什么来“冻结”所有的依赖项呢?有什么简单的方法可以做到这一点吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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可能有助于自动化整个过程。

票数 4
EN

Stack Overflow用户

发布于 2010-09-28 20:25:05

当你分支时,从某种意义上说,你是在创建它的一个新版本。提升版本号应该可以解决这个问题。

票数 0
EN

Stack Overflow用户

发布于 2010-09-28 20:39:17

是的,只需将版本标签添加到依赖项即可。如果您不确定当前的版本号是什么,可以运行"mvn help:effective- pom“来查看包含所有当前版本号的pom。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3812607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档