我们一直在使用gradle这个大约一年,并已与它有所成功。 许多功能都还是有点不透明的,但就快了。 我不知道我会了解如何正确解决这个问题,所以我会继续前进,提出这样的问题:
我已经看到了的gradle所有的例子有根项目和子项目的一个级别。 由于一些原因,我们想巩固我们的Git项目。 所有这些都是gradle这个项目,其中有一些gradle这个子项目。 我们希望与落得什么本质上是一个多层次结构的gradle。 我们不想改变所有这些项目设置的gradle,而是希望有一个管理所有项目和相应的子项目顶层gradle这个。 我第一次尝试表明,我不能有一个控制的build.gradle即编排所有的项目和子项目。 难道我做错了什么? 我在下面和打破固有的范式?
这里是我想要做一个样本结构:
Top Project
build.gradle
Project
build.gradle
Sub Project
build.gradle
src
Sub Project
...
Project
...
谢谢你,我希望我没有错过文档中的一些显而易见的解释。
我只是把TopProject / settings.gradle如下:
include 'Project1:SubProject1'
include 'Project1:SubProject2'
include 'Project2:SubProject1'
...
需要您目前拥有的项目,唯一的变化是删除从中settings.gradle文件,你只能有每个项目的结构一个setting.gradle文件。
我有一个类似的问题。 最简单的办法是通过类似ERDI的答案$根/ settings.gradle文件中添加项目的gradle配置。 不过,我设法自动添加所有的子项目。 逻辑只会通过我的目录结构和查找包含所有目录build.gradle
并将其添加为子项目。
这里是如何做到这一点:
- 确保你没有任何其他
settings.gradle
但一个根 - 根settings.gradle文件的内容应该是:
fileTree('.') {
include '**/build.gradle'
exclude 'build.gradle' // Exclude the root build file.
}.collect { relativePath(it.parent).replace(File.separator, ':') }
.each { include(it) }
我希望这有帮助。
这是合作得非常好:
ext{
buildPrefix = "build"
allProjects = ["P1", "P2"]
}
def createTasks(String prefix) {
def newTasks = allProjects.each {
def pName ->
def tName = "$prefix$pName"
tasks.add(name: tName, type: GradleBuild) {
dir = pName
tasks = [ prefix ]
}
}
}
createTasks(buildPrefix)
ext {
buildTasks = tasks.findAll{ t -> t.name.startsWith(buildPrefix) }
}
task build(dependsOn: buildTasks) {}
我只想补充一点,我想在顶层暴露的其他任务。
感谢您的指针。