我正试图从我的gradle构建中排除一个依赖项,主要是“slf4j-simple”。它运作良好,但在我进行“gradle eclipse”时没有反映出来。
我的gradle构建文件中有以下代码:
apply plugin:'war'
apply plugin:'eclipse'
apply plugin:'jetty'
...
dependencies {
compile 'mysql:mysql-connector-java:5.1.16'
compile 'net.sourceforge.stripes:stripes:1.5'
compile 'javax.servlet:jstl:1.2'
... (Rest of the dependencies)
}
configurations {
all*.exclude group:'org.slf4j',module:'slf4j-simple'
}
现在,当我运行'gradle build'时,slf4j-simple被排除在创建的war文件之外,这很好。
当我运行'gradle eclipse'时,slf4j-simple不会从eclipse类路径中排除。
gradle cookbook中提到了问题的解决方案,但我不明白如何应用它:
http://docs.codehaus.org/display/GRADLE/Cookbook#Cookbook-ExcludingdependenciesfromEclipseProjects
答案 0 :(得分:4)
尝试将此添加到build.gradle:
eclipseClasspath{
plusConfigurations.each{
it.allDependencies.each{ it.exclude group: 'org.slf4j', module: 'slf4j-simple' }
}
}
答案 1 :(得分:2)
使用gradle 1.0-milestone-3我不得不对rodion的答案进行修改以使其正常工作:
eclipseClasspath{
doFirst{
plusConfigurations.each{
it.allDependencies.each{ it.exclude group: 'org.slf4j', module: 'slf4j-simple' }
}
}
}
答案 2 :(得分:1)
使用eclipseClasspath
对我来说不起作用,但这可以解决问题:
configurations {
compile {
exclude group: 'commons-logging'
exclude module: 'jcl-over-slf4j'
}
}
将commons-logging
排除在传递之外(来自项目对Spring的依赖)以及jcl-over-slf4j
不包含在Eclipse项目的构建路径中(我有Gradle runtime
依赖关系jcl-over-slf4j
但不希望它包含在构建(编译)路径中。
答案 3 :(得分:0)
这在Gradle 4.10中有效
eclipse {
classpath {
file {
whenMerged { cp ->
cp.entries.removeAll { (it instanceof Library) && it.moduleVersion?.group == 'org.slf4j' && it.moduleVersion?.name == 'slf4j-simple' }
}
}
}
}