具有“外向”依赖性的Maven中央jar

时间:2016-03-09 08:21:31

标签: maven gradle transitive-dependency

dumbster:dumbster:我们使用的1.6(来自Maven Central)声明了对javax.mail的依赖:mail:1.3.2。不幸的是,Maven Central包含javax.mail的jars:仅从1.4版开始的邮件。如果我为dumbster:dumbster:1.6和javax.mail:mail:1.4.1添加依赖项,一切正常。

但我想避免告诉所有开发人员dumbster不能传递,但需要额外的mail.jar。有什么方法可以避免这种情况吗?

我的印象是这个问题比较普遍:来自Maven Central的Jars可能会引起问题。

1 个答案:

答案 0 :(得分:1)

首先,这个dumbster dep有点老了,是的,你是对的..这是一个问题或更好是一个问题。很久以前,中心的规则已经改变,所以你不能把pom(jar)作为参考不在中环的罐子/ deps的中心。

通常的解决方案是在公司pom文件中定义这样的依赖关系,该文件在dependencyManagement中声明它并排除传递依赖关系并添加更新的版本。

title

通过使用上述内容,您的开发人员将被迫通过添加以下内容来定义<dependencyManagement> <dependencies> <dependency> <groupId>dumbster</groupId> <artifactId>dumbster</artifactId> <version>1.6</version> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.1</version> </dependency> </dependencies> </dependencyManagement> 。如果他们忘记添加javax.mail,那么构建将失败。

javax.mail

您还可以使用maven-enforcer-plugin强制使用正确的版本。