在Gradle设置文件中包含使用通配符的子项目

时间:2010-02-19 14:38:10

标签: java groovy build gradle

在Gradle中,您需要定义要在'settings.gradle'文件中构建的子项目。要构建三个子项目,您可以执行以下操作:

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

我遇到的问题是我有很多项目要包括在内。有没有办法在这个定义中使用通配符?我正在寻找这样的东西:

include "*"

那当然不起作用。这将更容易使用,因为我有许多子项目要包括。有没有办法自动将子目录包含为项目?

3 个答案:

答案 0 :(得分: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])

我的诀窍

答案 1 :(得分:1)

你能做点什么:

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

将“Child1”包含到“Child10”中?

显然,您需要将收集更改为某种文件夹扫描,但快速测试可以正常运行,扫描很有可能

答案 2 :(得分:1)

以下代码支持任意深度的层次结构:

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