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

Java 在渐变设置文件中包含使用通配符的子项目,java,groovy,build,gradle,Java,Groovy,Build,Gradle,在Gradle中,您需要在“settings.Gradle”文件中定义要构建的子项目。要构建三个子项目,您可以执行以下操作: include "child1", "child2", "child3" include "*" 我遇到的问题是,我有很多项目要包括在内。有没有办法在这个定义中使用通配符?我在找这样的东西: include "child1", "child2", "child3" include "*" 这当然行不通。这将更容易处理,因为我有许多子项目要包含。有没有一种方法可以自

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

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

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

这当然行不通。这将更容易处理,因为我有许多子项目要包含。有没有一种方法可以自动将子目录包含为项目?

您可以执行以下操作:

include (1..10).collect { "Child$it" }
包括“Child1”到“Child10”

显然,您需要将collect更改为某种文件夹扫描,但如果快速测试有效,那么扫描很有可能

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])

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

rootDir.eachFileRecurse { f ->
    if ( f.name == "build.gradle" ) {
        String relativePath = f.parentFile.absolutePath - rootDir.absolutePath
        String projectName = relativePath.replaceAll("[\\\\\\/]", ":")
        include projectName
    }
}
“child1”和“child2”只是一个例子。项目的真实名称中没有数字。我希望有一个内置的功能,而不用列出目录中的文件,但我想可能没有。是否包括新文件('.').listFiles().findAll{it.isDirectory()}.collect{it.name}工作?