2012-03-16 26 views
6

我想排除Gradle中的一個目錄..我使用下面的代碼..當我做一個minus(我也試過exclude我嘗試的目錄除去仍然存在於srcDirs(當我將它輸出在最後)從SourceSet中排除不在Gradle中工作的目錄

建議

apply plugin: 'java' 

sourceSets { 
    test { 
    java { 
     srcDirs 'src/test/unit/java' 
     minus 'src/test/java'    
    } 
    } 
} 

task outputDirs << { sourceSets.test.java.srcDirs.each{f -> println(f)}} 
+0

您正在使用什麼版本的Gradle? – 2012-03-16 19:28:23

回答

8

試試這個:?

apply plugin: 'java' 

sourceSets { 
    test { 
     java { 
      srcDirs = ['src/test/unit/java'] 
     } 
    } 
} 

task outputDirs << { sourceSets.test.java.srcDirs.each{f -> println(f)}} 

這REA將源目錄的列表(這裏只有一個)賦給srcDirs屬性。使用

srcDirs = 'src/test/unit/java' 

與您的示例中一樣,只是將另一個源文件夾添加到現有文件夾中。

問候, René

+0

謝謝,這有效。第二個問題:爲什麼沒有減去或排除工作? – vicsz 2012-03-16 20:31:17

+0

嗯,我試着解釋一下:java關閉中的所有調用 – 2012-03-17 00:25:55

+0

好吧,有些註釋可能會在此澄清原因: - gradle dsl中的srcDirs的src/test/unit/java編程式地調用SourceDirectorySet# srcDirs(Object ... srcPaths) - SourceDirectory的類型爲FileCollection - 在FileCollection上調用減號不會修改給定的fileCollection,而是創建並返回新的FileCollection。這就是爲什麼「減號」在這裏沒有效果。 - 簡單地說,排除工作的方式與此處的「減號」呼叫相同。 - SourceDirectorySet界面上有一些待辦事項可以清理一些東西。不確定這個清理是否會成爲1.0的一部分 – 2012-03-17 00:35:14