2011-09-27 86 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,但不希望它包含在構建(編譯)路徑。