java - maven依赖版本冲突

标签 java maven maven-2 dependency-management

有两个项目:
A ----有一个 lib commons 版本。 1.3.7 ---(取决于B)
B ----有 lib commons 版本。 1.2.5

因此,我们正在构建项目 B,lib commons 版本。 1.2.5 将被包含并安装在本地存储库中,然后... 如果我们执行 A 的构建(这取决于 B),Maven 会决定 lib commons 版本。 1.3.7 必须包括在内,因为 lib 距树根的距离最小...... 我知道如果我们将 Artifact 的版本设置为:1.2.5 - 这是推荐的版本。但是如果我们把它放在 [] 中 - 这是一个硬性要求,maven 应该应用另一种策略来解决版本冲突 - 包含该 Artifact 的推荐版本。但是当我尝试这样做时,它当然不起作用,因为 Maven 从 loc 存储库中获取 Artifact ,其中包含对 lib commons 版本的引用。 1.2.5 在 list 文件中,但包含 lib - commons 版本。 1.3.7.您能否告诉我如何解决这个问题,或者列表中可能有一些工具或 Maven 插件可以告诉我们此类冲突。

最佳答案

您需要对依赖项使用排除。类似的东西(只是一个示例):

<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-amqp</artifactId>
<version>2.1.0.RELEASE</version>
<exclusions>
    <exclusion>
        <artifactId>spring-beans</artifactId>
        <groupId>org.springframework</groupId>
    </exclusion>
</exclusions>
</dependency>

如果您使用 Eclipse 并且不想手动执行此操作,则可以通过打开 pom 文件并选择“依赖关系层次结构”选项卡来完成此操作,在该选项卡下您可以看到所有依赖关系层次结构。然后您可以右键单击要排除的依赖项,然后单击“排除 Maven Artifact”

关于java - maven依赖版本冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13749239/

相关文章:

java - 为什么网格布局中不显示按钮?

Maven 聚合站点生成

java - Tesseract:在 Linux 远程主机中构建源代码的替代方案?

java - 如何使用 Maven 在 EAR 中添加 WAR

Android maven 插件,无法部署到设备

java jasypt 突然崩溃

java.sql.SQLException : Too many connections + Spring IBatis 异常

java - 动态设置 Maven Surefire JVM 类路径

java - Maven - 我可以在配置文件定义中引用配置文件 ID 吗?

java - Mongo 3.0.2 驱动程序 : how to escape dots(. )在字符串中?