需要使用gradle构建文件从eclipse中排除依赖项

时间:2011-09-27 14:59:26

标签: eclipse gradle

我正试图从我的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

4 个答案:

答案 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' }
      }
    }
  }
}