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

gradle在生成后执行任务

尚棋
2023-03-14

我正在使用gradle构建我的项目,使用以下build.gradle文件:

project('a'){
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'application'

    buildDir = 'build'

    [compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
    repositories {
        mavenCentral()
    }
    dependencies {
        compile 'org.slf4j:slf4j-api:1.7.7'
    } 
}

当我输入gradle build命令时,我希望gradle在生成后执行一个任务。

我在网上找到了一个ustRunPost,我尝试了多种方法都失败了。

如果你知道怎么做,请告诉我。

共有2个答案

龙承德
2023-03-14

现在你可以使用BuildListener,它很管用。下面是用kotlin DSL编写的示例

build.gradle.kts

plugins {
    id("com.android.application")
    id("kotlin-android")
    id("kotlin-kapt")
}

android {
    //[..]

    project.gradle.addBuildListener(object : BuildListener {
        override fun buildStarted(gradle: Gradle) {}

        override fun settingsEvaluated(settings: Settings) {}

        override fun projectsLoaded(gradle: Gradle) {}

        override fun projectsEvaluated(gradle: Gradle) {}

        override fun buildFinished(result: BuildResult) {
            
            // add what you need to do here
            println("finally!")
        }

    })
}

dependencies {
    //[...]
}
慕金林
2023-03-14

你需要的是finalizedBy,见以下脚本:

apply plugin: 'java'

task finalize {
    doLast {
       println('finally!')
    }
}

build.finalizedBy(finalize)

这是文档。

 类似资料:
  • 我使用的是Android Studio 2.0,当我试图运行程序时,发生了一些奇怪的事情。我运行了gradle的build命令,得到了以下错误: 因此...那是什么鬼东西?我应该做的是将代码添加到gradle.build来解决这个问题,但问题是:为什么我会得到这个错误消息? 请救救我伙计们!

  • 我面临的错误是无法将java.lang.Integer类转换为java.lang.String类。运行gradle测试时-Pnum=10。这是我的代码:

  • 这是Windows上的构建过程。我有一个gradle任务(类型:Exec),它使用它的doFirst闭包从外部目录临时复制文件,这是它的构建过程所必需的: 出于某种原因,使用doFirst中的commandLine来执行复制命令会使整个任务终止,并阻止执行任务的主要目的。

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

  • 谁有办法修好它?只是随机的...此处为完整stacktrace:

  • 今天在Android Studio中,我重建了这个项目,我得到了这个错误。该项目在重建前很好。我没有更改代码中的任何内容。 这是一种错误吗?谢谢