我如何向maven指出一个依赖项提供另一个依赖项?
在版本11.0.2之后,Google的guava库切换到Java6。幸运的是,对于那些坚持使用Java5的人来说,他们还发布了一个“guava-jdk5”工件 不幸的是,我的一些依赖关系过渡地引入了Guava11.0.2。这使得我的项目同时包含番石榴-jdk5和番石榴 通常,当我有冲突的版本时,我可以使用“dependencymanagement”标记来指示要拉入哪个版本。但由于这是两个不同的工件,我不明白如何做到这一点。最后我想告诉maven,番石榴和guava-jdk5是同一个工件,我想使用17.0版本的guava-jdk5。我该怎么做 谢谢 一个简单的方法是使用链接中的一个简单的外壳:我如何向maven指出一个依赖项提供另一个依赖项?,maven,guava,Maven,Guava,在版本11.0.2之后,Google的guava库切换到Java6。幸运的是,对于那些坚持使用Java5的人来说,他们还发布了一个“guava-jdk5”工件 不幸的是,我的一些依赖关系过渡地引入了Guava11.0.2。这使得我的项目同时包含番石榴-jdk5和番石榴 通常,当我有冲突的版本时,我可以使用“dependencymanagement”标记来指示要拉入哪个版本。但由于这是两个不同的工件,我不明白如何做到这一点。最后我想告诉maven,番石榴和guava-jdk5是同一个工件,我想使用
<project>
...
<dependencies>
<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion> <!-- declare the exclusion here -->
<groupId>sample.ProjectB</groupId>
<artifactId>Project-B</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
...
示例项目a
项目A
1
编译
示例项目B
B项目
一个简单的方法是使用链接中的一个简单的外壳:
<project>
...
<dependencies>
<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion> <!-- declare the exclusion here -->
<groupId>sample.ProjectB</groupId>
<artifactId>Project-B</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
...
示例项目a
项目A
1
编译
示例项目B
B项目
一个简单的方法是使用链接中的一个简单的外壳:
<project>
...
<dependencies>
<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion> <!-- declare the exclusion here -->
<groupId>sample.ProjectB</groupId>
<artifactId>Project-B</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
...
示例项目a
项目A
1
编译
示例项目B
B项目
一个简单的方法是使用链接中的一个简单的外壳:
<project>
...
<dependencies>
<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion> <!-- declare the exclusion here -->
<groupId>sample.ProjectB</groupId>
<artifactId>Project-B</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
...
示例项目a
项目A
1
编译
示例项目B
B项目
有没有办法在全球范围内做到这一点?我希望我的java 5项目总是排除guava,但是如果java 6项目使用这些java 5项目中的一个,那么我希望guava-jdk5从中排除。如果某个依赖项在某一天传递性地引入番石榴,但在下一个版本中没有,我的pom中可能会有一个不必要的排除项。我宁愿告诉maven,对于这个项目,我永远不想让guava在其中,或者guava-jdk5提供guava。@JasonThompson,您可以使用@Vic在全局级别(root pom.xml)指定排除,我不希望排除适用于所有依赖项,而不仅仅是某些依赖项。我做了一些研究,看起来我想做的事情还不可能:@jasonompson,谢谢你的澄清,我现在明白你的意思了。有没有办法在全球范围内做到这一点?我希望我的java 5项目总是排除guava,但是如果java 6项目使用这些java 5项目中的一个,那么我希望guava-jdk5从中排除。如果某个依赖项在某一天传递性地引入番石榴,但在下一个版本中没有,我的pom中可能会有一个不必要的排除项。我宁愿告诉maven,对于这个项目,我永远不想让guava在其中,或者guava-jdk5提供guava。@JasonThompson,您可以使用@Vic在全局级别(root pom.xml)指定排除,我不希望排除适用于所有依赖项,而不仅仅是某些依赖项。我做了一些研究,看起来我想做的事情还不可能:@jasonompson,谢谢你的澄清,我现在明白你的意思了。有没有办法在全球范围内做到这一点?我希望我的java 5项目总是排除guava,但是如果java 6项目使用这些java 5项目中的一个,那么我希望guava-jdk5从中排除。如果某个依赖项在某一天传递性地引入番石榴,但在下一个版本中没有,我的pom中可能会有一个不必要的排除项。我宁愿告诉maven,对于这个项目,我永远不想让guava在其中,或者guava-jdk5提供guava。@JasonThompson,您可以使用@Vic在全局级别(root pom.xml)指定排除,我不希望排除适用于所有依赖项,而不仅仅是某些依赖项。我做了一些研究,看起来我想做的事情还不可能:@jasonompson,谢谢你的澄清,我现在明白你的意思了。有没有办法在全球范围内做到这一点?我希望我的java 5项目总是排除guava,但是如果java 6项目使用这些java 5项目中的一个,那么我希望guava-jdk5从中排除。如果某个依赖项在某一天传递性地引入番石榴,但在下一个版本中没有,我的pom中可能会有一个不必要的排除项。我宁愿告诉maven,对于这个项目,我永远不想让guava在其中,或者guava-jdk5提供guava。@JasonThompson,您可以使用@Vic在全局级别(root pom.xml)指定排除,我不希望排除适用于所有依赖项,而不仅仅是某些依赖项。我做了一些研究,看起来我想做的还不可能:@JasonThompson,谢谢你的澄清,我现在明白你的意思了。显然这是不可能的。显然这是不可能的。显然这是不可能的。显然这是不可能的。