首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Maven中检测不兼容的依赖项?

在Maven中检测不兼容的依赖项?
EN

Stack Overflow用户
提问于 2012-03-01 14:47:53
回答 2查看 1.9K关注 0票数 8

假设您有一组web应用程序,这些应用程序使用不同版本的通用库,如Spring。我有一个业务逻辑库,它也使用这个公用库。到目前为止,没有问题,但在此过程中,公共库的一个版本更改了抽象类定义,并破坏了业务逻辑库。

所以我最终得到了一个兼容的版本表,看起来像这样…

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
business-lib-version | common-lib-version
         1.0         |        1.0
         1.1         |        2.0 

我不希望业务lib版本驱动消费应用程序中的公共lib版本。相反,我希望根据公共库选择正确版本的业务库。我非常确定这是不可能的,所以我继续主要问题。

有没有一种优雅的方法来检测版本不兼容性?理想情况下,我喜欢构建时解决方案,否则早期运行时解决方案就可以了。

我尝试过在Maven中使用版本范围,但由于Maven如何以非标准版本格式对版本进行排序,这给我们带来了许多问题,而且我们在构建时正确解析范围时也遇到了各种问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-01 17:20:33

如果一个依赖项版本意外地被另一个依赖项阻止,那么Ning dependency-versions-check Maven将使您的构建失败。它不会为你修复它,但它至少会告诉你!

票数 5
EN

Stack Overflow用户

发布于 2012-03-01 16:47:32

有没有一种优雅的方法来检测版本不兼容性?理想情况下,我喜欢构建时解决方案,否则早期运行时解决方案就可以了。

我不知道有什么方法可以很好地做到这一点--无论是在运行时还是在构建时。在不调查清单或jar文件名的情况下,没有标准的机制来确定包的版本--这充其量只是一种技巧。也许有一个我不知道的maven插件可以自动完成这个任务,但我不知道。

我们只需修复代码所需的库的版本,并在需要时进行升级,要么是因为我们需要额外的功能,要么是因为其他依赖项需要。通常,我们领先于其他依赖项,因此我们在pom.xml中的依赖项定义中放置一个典型的排除标记

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring</artifactId>
    <version>${spring-version}</version>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>

这使我们可以依赖于更高版本的commons-logging

但是,如果您使用的是1.0版的库,而您的一个依赖项使用的是2.0版,那么您将不得不尝试使用exclusion,看看该依赖项是否可以在1.0版中运行--甚至可以编译。如果不是,那么你将被迫升级你的代码以使用2.0或降级依赖项。

很抱歉我不能再帮你了。

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

https://stackoverflow.com/questions/9518284

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文