2010-02-19 103 views
3

在Gradle中,您需要定義要在'settings.gradle'文件中構建的子項目。要建立三個子項目,你會這樣做:在Gradle設置文件中包含使用通配符的子項目

include "child1", "child2", "child3" 

我遇到的問題是,我有很多項目,包括。有沒有在這個定義中使用通配符的方法?我正在尋找這樣的事情:

include "*" 

那當然不起作用。由於我有很多子項目可以包含,所以這會更容易。有沒有辦法自動將子目錄包含爲項目?

回答

1

你可以這樣做:

include (1..10).collect { "Child$it" } 

包括 「Child1」 高達 「Child10」?

很顯然,你需要的collect更改爲某種文件夾掃描的,但它是快速測試工作,然後將掃描有一個很好的機會

+0

「child1」 和 「的child2」 WER只是爲了舉例。項目的真實姓名中沒有數字。我希望有一個內置的功能,而不訴諸目錄中的文件,但我想也許沒有。 – 2010-02-19 19:01:51

+1

是否 包含新文件('。').listFiles()。findAll {it.isDirectory()} .collect {it.name} 是否工作? – 2010-02-20 00:45:30

4

include rootDir.listFiles().findAll { 
    it.isDirectory() 
    && !(it =~ ".*/\\..*") // don't add directories starting with '.' 
    && !(it =~ "^\\..*") // don't add directories starting with '.' 
    }.collect { 
     it.getName() 
    }.toArray(new java.lang.String[0]) 

的伎倆對我來說

0

下面的代碼支持任意深度的層次:

rootDir.eachFileRecurse { f -> 
    if (f.name == "build.gradle") { 
     String relativePath = f.parentFile.absolutePath - rootDir.absolutePath 
     String projectName = relativePath.replaceAll("[\\\\\\/]", ":") 
     include projectName 
    } 
} 
相關問題