2011-09-27 84 views
5

我想从我的gradle构建中排除依赖项,主要是“slf4j-simple”。它运行良好,但在运行“gradle eclipse”时没有反映出来。需要使用gradle构建文件从eclipse中排除依赖关系

我在gradle这个build文件下面的代码:

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这个建设”,则SLF4J-简单从创建WAR文件这是很好的除外。

当我运行'gradle eclipse'时,slf4j-simple不会从eclipse classpath中排除。

对这一问题的解决方案在gradle这个食谱被提及,但我不明白如何使用它:

http://docs.codehaus.org/display/GRADLE/Cookbook#Cookbook-ExcludingdependenciesfromEclipseProjects

回答

4

尝试增加了此信息的build.gradle:

eclipseClasspath{ 
    plusConfigurations.each{ 
    it.allDependencies.each{ it.exclude group: 'org.slf4j', module: 'slf4j-simple' } 
    } 
} 
+0

我有一个更重要的问题。我如何学习gradle并理解如何操作这些高级配置?我真的无法得到它,每当我需要一些我需要发表的问题。 –

+1

Gradle在其官方网站上有很好的文档。我从那里学到了我需要知道的一切(偶尔也会看到Gradle源代码)。对于其他任何东西,请在这里问问或谷歌)) – rodion

+1

在Eclipse Kepler中使用Gradle IDE插件,这是行不通的。我有一个运行时依赖项,我试图用上面的方法排除; Eclipse Gradle毫无怨言地运行build.gradle,但项目构建路径仍包含排除的工件。 –

2

随着gradle 1.0里程碑-3我不得不做一个修改,从rodion的答案,使其工作:

eclipseClasspath{ 
doFirst{ 
    plusConfigurations.each{ 
     it.allDependencies.each{ it.exclude group: 'org.slf4j', module: 'slf4j-simple' } 
    } 
    } 
} 
1

使用eclipseClasspath,我没有工作,但做的伎俩:

configurations { 
    compile { 
     exclude group: 'commons-logging' 
     exclude module: 'jcl-over-slf4j' 
    } 
} 

,从被列入及物动词(从项目的春的依赖),也jcl-over-slf4j被包含在Eclipse项目的构建排除commons-logging路径(我有一个Gradle runtime依赖于jcl-over-slf4j,但不希望它包含在构建(编译)路径。