0

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

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

4

2 回答 2

1

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

<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 工件”

于 2012-12-06T17:51:48.197 回答
0

你需要跑mvn dependency:tree

于 2012-12-06T17:50:23.473 回答