2012-09-28 18 views
2

我們在一個項目中的以下配置...如何從上游項目中的fileTree中排除jar?

configurations { 
    //compile.exclude module: 'commons' 
    //all*.exclude group: 'org.gradle.test.excludes', module: 'reports' 
    all*.exclude module: 'log4j' 
} 

dependencies { 
    compile group: 'org.slf4j',   name: 'slf4j-api',    version: '1.6.6' 
    compile group: 'org.slf4j',   name: 'log4j-over-slf4j',  version: '1.6.6' 
    compile group: 'com.google.inject', name: 'guice',     version: '3.0' 
    compile group: 'com.google.protobuf',name: 'protobuf-java',   version: '2.4.1' 
    //compile group: 'org.asteriskjava',name: 'asterisk-java',   version: '1.0.0.M3' 

    //to be erased soon 
    compile group: 'commons-configuration',name:'commons-configuration',version: '1.8' 
    //compile group: 'org.bouncycastle', name: 'bcpg-jdk16',    version: '1.46' 

    compile project(':sdi-master') 
    compile project(':sdi-webserver') 
} 

不幸的是,該項目SDI-Web服務器有它自己的log4j從文件樹帶來像這樣

project(':sdi-webserver') { 
    project.ext.genLibDir = file('lib') 

    dependencies {  
     compile project(':sdi-master') 
     compile fileTree(dir: '../webserver/lib', include: '*.jar') 
     compile fileTree(dir: '../webserver/play-1.2.4/framework/lib', include: '*.jar') 
     compile fileTree(dir: '../webserver/play-1.2.4/framework', include: 'play-*.jar') 
    } 

我們如何排除這種jar,所以它不是依賴關係的一部分。上面的內容不包括我們只適用於存儲庫和傳遞依賴關係,並且不適用於fileTree,但我們仍然需要以某種方式排除jar文件,因爲我們希望eclipse任務構建正確的.classpath,我們希望configurations.compile具有準確的信息複製罐,等等,等等

感謝, 院長

回答

5

只需fileTree使用exclude。語法與include相同。

+0

好吧,有點臭,我不能寫一些適用於所有文件樹(和傳遞的東西)的全局排除。好吧。 –

+0

Gradle沒有'fileTree'依賴的元數據,所以通常排除不可能工作。也許我們可以提供一種在構建腳本中添加元數據的方法。隨意提出功能請求。 –