我们使用的dumbster:dumbster:1.6(来自Maven Central)声明了对javax.mail:mail:1.3.2的依赖。不幸的是,Maven Central仅从版本1.4开始包含javax.mail:mail的jar。如果我对dumbster:dumbster:1.6和javax.mail:mail:1.4.1都添加了依赖项,那么一切都会正常进行。
但是,我想避免告诉所有开发人员,dumbster不能暂时运行,而需要一个额外的mail.jar。有什么办法可以避免这种情况?
我觉得这个问题更普遍:来自Maven Central的Jars指向Maven Central之外的地方可能会引起问题。
最佳答案
首先,这个笨拙的部门有些旧,是的,您是对的..这是一个问题,或者更好的是一个问题。很久以前,中环的规则已更改,因此您不能将pom( jar )放入不属于中环的引用jar / deps。
通常的解决方案是在公司pom文件中定义这样的依赖关系,该文件会在dependencyManagement中声明该依赖关系,并排除传递性依赖关系并添加一个新版本。
<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
,则构建将失败。<dependencies>
<dependency>
<groupId>dumbster</groupId>
<artifactId>dumbster</artifactId>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</dependency>
</dependencies>
您还可以使用maven-enforcer-plugin强制使用正确的版本。
关于maven - 具有 “outgoing”依赖关系的Maven中央jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35886332/