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

如何在子项目任务结束时执行一次Gradle任务

殷安顺
2023-03-14

我正在使用以下项目结构

Project
|-Subproject1
|-Subproject2
|build.gradle
|settings.gradle

子模块包含在设置中。gradle,并在内部版本中配置。根项目的渐变。

我有3个任务要做

  1. build(每个子项目都有这个)
  2. 部署(这是每个子项目都需要自己工作的打包机制)
  3. finalize部署(这只需要调用一次)

我想能够打电话

$gradle部署

$gradle Subproject 1:部署

build.gradle

configure(subprojects) {

    task build <<{
        println "Do Build "+ project.name
    }

    task deploy(dependsOn:build){
        println 'deploy '+project.name

        doLast{
            finalizeDeployment.execute()
        }
    }
}

task finalizeDeployment{

    dependsOn subprojects.deploy

    doLast{
        println 'Finalize Deployment'
    }
}

共有2个答案

濮俊美
2023-03-14

似乎您可以通过依赖项获得相同的功能,而无需使用父项。部署完成。执行()。

我工作的地方我们使用:

subprojects {

   task dist(type: Copy, dependsOn: assemble) {
       ...
   }
}

task dist
dist.dependsOn subprojects.dist

task finalizeDist(dependsOn : subprojects.dist) {
    ...
}
dist.dependsOn finalizeDist
艾心远
2023-03-14

它的工作方式如下

configure(subprojects) {

    task build << {
        println "Do Build " + project.name
    }

    task deployPrepare(dependsOn: build)<<{
            println 'deploy ' + project.name
    }

    task deployFinalize(dependsOn: deployPrepare)<<{
        parent.deployFinalize.execute()
    }
}

task deployFinalize {

    doLast {
        println 'Finalize Deployment'
    }
}

deployFinalize.dependsOn(subprojects.deployPrepare)

gradle子项目1:deployFinalize的控制台输出为:

Do Build subproject1
deploy subproject1
Finalize Deployment

gradle deployFinalize的控制台输出为:

Do Build subproject1
deploy subproject1
Do Build subproject2
deploy subproject2
Finalize Deployment
 类似资料:
  • 我正在使用以下项目结构Project ---子项目1 ---子项目2 ---子项目3 |build.gradle |设置。格拉德尔 子项目2取决于子项目1 子项目3取决于子项目2 对于所有子项目,我需要有任务“构建”,这将是每个项目的自定义任务。但在“构建”之前必须执行一些初始化任务(对于所有子项目都相同)。问题是,这个初始化任务必须在构建期间执行一次,而且只能执行一次,无论我在构建什么-根项目或

  • 我已经设置了一个Gradle任务来自动生成Gradle构建中的一个子项目,另一个子项目依赖于该子项目(这样做的原因:涉及Apache Cordova的故事很长!)。因此,根构建。gradle包含此自动生成任务,该任务创建“CordovaLib”子项目。构建。另一个子项目(非自动生成)中的gradle依赖于CordovaLib: 有没有办法在评估未生成的子项目的build.gradle之前执行自动生

  • 我有一个这样的多项目构建 现在,在项目中,我已经为所有子项目声明了一个任务,如下所示: 当我运行时,我得到的输出类似于以下内容(其他内容): 现在,我尝试像这样为简单项目运行该任务 我得到的输出是: 失败:构建失败,但有一个异常。 > 哪里出错了:在项目中找不到任务你好:例子:简单项目。一些候选人是:帮助。 尝试:运行gradle任务以获取可用任务的列表。使用--stack跟踪选项来获取堆栈跟踪。

  • 我希望在编译任何子项目之前先执行protobuf任务,因为我的子项目依赖于从protobuf任务生成的java文件。那么我怎样才能做到这一点呢?我不想在每个子项目中都有protobuf任务,相反,我只想在根项目中同时完成它,但在编译子项目之前。

  • 我正在从事一个spring boot项目,以自动化与gradle的集成测试。我最近开始在一家新企业工作,我的同事们按如下方式运行集成测试:在构建中。gradle文件有一个集成测试任务 启动任务后,应用程序开始在指定端口运行,然后打开postman,导入集合并运行测试。 我的工作是找到一种方法来跳过额外的点击,即自动运行邮递员集合。第一个想法是使用postman-run gradle插件,但由于企业

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