在 Gradle 中,您需要在“settings.gradle”文件中定义要构建的子项目。要构建三个子项目,您将执行以下操作:
include "child1", "child2", "child3"
我遇到的问题是我有很多项目要包括在内。有没有办法在这个定义中使用通配符?我正在寻找这样的东西:
include "*"
这当然行不通。这会更容易使用,因为我有很多子项目要包括在内。有没有办法自动将子目录包含为项目?
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
}
}
你可以做类似的事情:
include (1..10).collect { "Child$it" }
包括“Child1”到“Child10”?
显然,您需要将收集更改为某种文件夹扫描,但如果快速测试有效,那么扫描就有很好的机会