我有一个带有以下依赖关系树的项目。
my:project:jar:1.0
+- commons-configuration:commons-configuration:jar:1.1:compile
| +- commons-collections:commons-collections:jar:3.0:compile
| +- dom4j:dom4j:jar:1.4:compile
| | +- jaxen:jaxen:jar:1.0-FCS:compile
| | | +- maven-plugins:maven-cobertura-plugin:1.3:plugin
maven-cobuertura拔空提供了pom
和jar
,但Jaxen声明了对plugin
类型的依赖性。看来Maven可以接受,但是我们构建的后期部分使用SBT作为其构建工具。SBT抱怨它无法解决依赖性:
::::::::::::::::::::::::::::::::::::::::::::::
:: FAILED DOWNLOADS ::
:: ^ see resolution messages for details ^ ::
::::::::::::::::::::::::::::::::::::::::::::::
maven-plugins#maven-cobertura-plugin;1.3!maven-cobertura-plugin.plugin
我试图在顶级POM中排除依赖关系:
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<!-- Exclude dependencies that are not needed for building and are misconfigured, causing errors in sbt -->
<exclusions>
<exclusion>
<artifactId>maven-cobertua-plugin</artifactId>
<groupId>maven-plugins</groupId>
</exclusion>
</exclusions>
</dependency>
如果我运行mvn dependency:tree
,则不再列出Cobertura。但是,sbt
仍然找到依赖性并抱怨。
我删除了〜/.ivy/cache/my/project,因此任何对旧POM的缓存引用都应该消失。
我也尝试运行sbt update
,但由于丢失的依赖性而无法执行。
sbt
应该观察Maven排除吗?还是我还需要在build.sbt
中设置一个排除?
升级到SBT 0.13.11可能会有所帮助。请参阅https://github.com/sbt/sbt/issues/2109