SBT的Maven中不包括深度嵌套的依赖性



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

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拔空提供了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中设置一个排除?

升级到SBT 0.13.11可能会有所帮助。请参阅https://github.com/sbt/sbt/issues/2109

最新更新