当前位置: 首页 > 知识库问答 >
问题:

执行子项目的分级任务

戴博
2023-03-14
Root
    projA
    projB
    other
        projC
        projD
        projE
        ...

我知道我能做到

configure(subprojects.findAll {it.name != 'tropicalFish'}) {
    task hello << { task -> println "$task.project.name"}
}

但这也会得到projA和projB,我只想在c,d,E上运行任务...请让我知道实现这一点的最佳方法。

共有1个答案

狄冥夜
2023-03-14

不完全确定你要找的是哪一个,但他们应该会覆盖你的基地。

1.直接调用任务

你应该可以打电话给我

gradle :other/projC:hello :other/projD:hello
# Root/build.gradle
allprojects {
    task hello << { task -> println "$task.project.name" }
}
# Root/settings.gradle
include 'projA'
include 'projB'
include 'other/projC'
include 'other/projD'
# Root/build.gradle
allprojects {
    if (project.name.startsWith("other/")) {
        task hello << { task -> println "$task.project.name" }
    }
}
$ gradle hello
:other/projC:hello
other/projC
:other/projD:hello
other/projD

这个版本与我对您的问题的理解相匹配,这意味着子项目(buildJar)上已经有一个任务,并且在root中创建一个任务,它将只调用子项目其他/*:buildJar

allprojects {
    task buildJar << { task -> println "$task.project.name" }
    if (project.name.startsWith("other/")) {
        task runBuildJar(dependsOn: buildJar) {}
    }
}

这将在每个项目上创建一个任务“buildjar”,而只在其他/*项目上创建一个任务“runbuildjar”,因此您可以调用:

$ gradle runBuildJar
:other/projC:buildJar
other/projC
:other/projC:runBuildJar
:other/projD:buildJar
other/projD
:other/projD:runBuildJar

您的问题可以通过多种方式来理解,希望这篇文章涵盖了所有问题:)

 类似资料:
  • 我正在使用Eclipse的STS插件创建gradle多项目。我以为我在读完教程后得到了基本的知识,但我无法再现所显示的行为。添加时 对于父项目的build.gradle,我将假设每个项目执行的任务'hello‘。为子项目实际进行了2次,但结果只是: 我的项目树看起来或多或少是这样的:

  • IDE:spring工具套件4 框架:spring boot 版本:v6 我已经创建了一个由3个子项目a、B和C组成的多项目gradle构建。我想在根构建中创建一个自定义任务。gradle要实现以下操作,运行自定义任务将 1)执行子项目a的bootRun任务。 2)然后几秒钟后,执行子项目B和C的bootRun任务 *Bootrun是一个将项目作为spring boot应用程序运行的任务 注意,子

  • 我有一个多项目的Gradle构建,其中子项目被分配了独立于根项目的版本号。我想将这个版本号注入每个子项目中的几个资源文件中。通常,我会通过为根构建中的每个子项目配置processResources任务来实现这一点。然而,问题是Gradle似乎在加载子项目的构建文件之前执行processResources任务,并且正在注入“unspecified”作为版本。 目前,我的项目如下所示: /设置。格拉德

  • 我有一个非常基本的多项目分级设置,如下所示: 文件包括这两个子项目。根项目不应用java插件,但两个子项目都应用了。使用时,所有东西都按预期生成。 但是,据我所知,由于我没有在根项目中应用插件,因此它不应该有任务。 的输出显示任务。 但的输出只显示列有和。 所以我的问题是--在这个场景中到底执行了什么?gradle只是找到所有子项目中匹配供应模式的每一个任务吗?是否有关于此任务名称解析的特定规则?

  • 我有一个多项目的Gradle构建,我定制了“运行”任务,以便在根项目中做一些不同的事情。然而,我不希望它像现在这样在完成后调用每个子项目的“运行”任务。但是这种行为应该只针对这个任务,我希望其他每个任务都按照默认值递归执行,但run任务不是。我也不能为每个子项目全局禁用run任务,因为它在单独执行时在每个子项目中都有一个目的。

  • 我面临以下问题。我有一个多模块的Gradle项目。一个模块是我的根项目,第二个模块是集成测试。 为了让我的集成测试运行,复制任务需要首先运行,以便将一些资产移动到项目根目录上的文件夹中。 我已经在我的根项目上定义了这样一个任务,当我试图调用它时,它什么也不做(我尝试了几种不同的调用方式)。 由于失败,我继续在子项目本身上创建了以下任务: 这是我的另一个任务。我的目标是让它将根项目类以及在下生成的j