我有两个模块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()
}
}
}
}
这就是我解决问题的方法,但我认为必须有更好的方法。有人可以帮忙吗?