gradle execute task after build

I am building my project with gradle, with the following build.gradle file:

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'
    } 
}

When I input the gradle build command, I want gradle to execute a task after the build.

I found a mustRunAfter on the Internet, and I have tried a variety of ways but failed.

Please tell me if you know how.


Solution 1:

What you need is finalizedBy, see the following script:

apply plugin: 'java'

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

build.finalizedBy(finalize)

Here are the docs.

Solution 2:

Nowadays you can use a BuildListener, it just works. Below is an example written in 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 {
    //[...]
}