有两个项目:
A ----有一个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。你能不能告诉我如何解决这个问题,或者在列表中可能有一些工具或maven插件可以告诉你这样的问题。
答案 0 :(得分: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工件”
答案 1 :(得分:0)
您需要运行mvn dependency:tree