是否有可能建立超过2级水平的gradle这个项目?(Is it possible to set up

2019-07-21 06:02发布

我们一直在使用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
    ...

谢谢你,我希望我没有错过文档中的一些显而易见的解释。

Answer 1:

我只是把TopProject / settings.gradle如下:

include 'Project1:SubProject1'
include 'Project1:SubProject2'
include 'Project2:SubProject1'
...

需要您目前拥有的项目,唯一的变化是删除从中settings.gradle文件,你只能有每个项目的结构一个setting.gradle文件。



Answer 2:

我有一个类似的问题。 最简单的办法是通过类似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) }

我希望这有帮助。



Answer 3:

这是合作得非常好:

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) {}

我只想补充一点,我想在顶层暴露的其他任务。

感谢您的指针。



文章来源: Is it possible to set up a gradle project with more than 2 levels?
标签: gradle