排除在maven中针对sbt的深层嵌套依赖项

时间:2016-06-22 16:05:02

标签: maven sbt

我有一个带有以下依赖树的项目。

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-pluging提供了pomjar,但是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中设置排除项?

1 个答案:

答案 0 :(得分:0)

升级到sbt 0.13.11可能有所帮助。 见https://github.com/sbt/sbt/issues/2109