在我的build.gradle
文件中,我有以下内容:
...
dependencies {
...
testCompile (group: 'org.uncommons', name: 'reportng', version: '1.1.2') { exclude group: 'org.testng', module: 'testng' }
...
}
...
reportng
需要velocity-1.4.jar
和velocity-dep-1.4.jar
,实际上上面的testCompile
依赖项会导致这两个JAR被提取并被放入Eclipse的.classpath
文件,作为“导出”(即,检查Eclipse的“Java Build Path”对话框的“Order and Export”选项卡中的复选框)。
这两个JAR设置为导出的事实是一个问题。我需要它们仍然被取出但不能被导出。
从Gradle doc我了解到这是通过使用noExportConfigurations
按照他们的示例完成的:
apply plugin: 'java'
apply plugin: 'eclipse'
configurations {
provided
someBoringConfig
}
eclipse {
classpath {
//if you don't want some classpath entries 'exported' in Eclipse
noExportConfigurations += configurations.provided
}
}
我的问题是我没有configurations {}
部分,虽然我当然可以添加一部分,但我不知道要放入什么内容以便从导出中排除而不是整个{{1但只有两个随附的JAR。
答案 0 :(得分:1)
你可能想要这样的东西:
configurations {
noExport
}
dependencies {
// replace with correct values
noExport "foo:velocity:1.4"
noExport "foo:velocity-dep:1.4"
}
eclipse {
classpath {
noExportConfigurations += configurations.noExport
}
}
PS:请不要在此处和http://forums.gradle.org双重发帖。
答案 1 :(得分:1)
显然,在Peter's answer之后的一年半中,不推荐使用noExportConfigurations,并计划在Gradle 3.0中将其删除。更重要的是,the linked Gradle forum thread中没有一个解决方案允许我删除从文件夹导入的依赖项,例如war / WEB-INF / lib。
经过大量研究后,我偶然发现了这个build.gradle file in GitHub末尾的一个例子,它重新排序了类路径中的条目:
withXml { xml ->
def node = xml.asNode()
node.remove( node.find { it.@path == 'org.eclipse.jst.j2ee.internal.web.container' } )
node.appendNode( 'classpathentry', [ kind: 'con', path: 'org.eclipse.jst.j2ee.internal.web.container', exported: 'true'])
}
我修改了示例,以便它只使用Groovy Node的正则表达式功能删除JAR文件。请注意,不需要xml ->
部分,并且此条目是文件闭包的子项:
withXml {
def node = it.asNode()
node.remove( node.find { it.@path ==~ /.*velocity-1\.4\.jar/ } )
node.remove( node.find { it.@path ==~ /.*velocity-dep-1\.4\.jar/ } )
}