提供的依赖项显示在部署程序集部分中

时间:2013-04-10 16:08:27

标签: eclipse gradle

我有两个模块A和B.模块A是通用的,可以包含在许多不同的项目中。我有以下列方式配置的自定义依赖项:

build.gradle(模块A)

configurations { providedCompile }

eclipse.classpath.plusConfigurations += configurations.providedCompile

sourceSets {
    main { compileClasspath += configurations.providedCompile }
    test { compileClasspath += configurations.providedCompile }
}

模块A对某些库(例如com.test.gradle.C)具有自定义的“providedCompile”依赖关系。像这样:

build.gradle(模块A)

providedCompile "com.test.gradle.C:common-tests:${myTestsVersion}"

现在,在模块B中,我已经定义了对模块A的依赖。

build.gradle(模块B)

compile project(':moduleA')

在模块B中,这是一个Web项目,我想使用不同版本的库com.test.gradle.C,例如

compile "com.test.gradle.C:common-tests:${myTestsVersion}"

问题是,在部署部署程序集中的eclipse中,我可以看到来自模块A的库。这是因为.classpath文件包含

<classpathentry ...>
    <attributes>
        <attribute .../>
    </attributes>
</classpathentry>

为了摆脱属性元素,我在gradle中写了以下内容:

build.gradle(模块A)

eclipse {

    classpath.file {
        // Classpath entry for Eclipse which changes the order of classpathentries; otherwise no sources for 3rd party jars are shown
        withXml { xml ->
            def node = xml.asNode()
            def provided = node.findAll { it.@path.contains('com.test.gradle.C') }

            provided.each{ dep ->
                dep.children().clear()
            }
        }
    }
}

这就是我解决问题的方法,但我认为必须有更好的方法。有人可以帮忙吗?

0 个答案:

没有答案