gradle在编译结束时调用方法

时间:2018-06-12 18:33:04

标签: android android-studio gradle plugins android-gradle

假设我有一个函数说java编写的java文件。 拿这个是android studio的功能, 编译java文件 - >创建类文件 - >使用类文件构建apk。

现在我希望在创建类文件之后和类文件转换为apk之前立即调用该函数。

我在macOS终端上使用gradle,我也创建了build.gradle文件。

build.gradle文件位于

之下
    apply plugin : "java"
    apply plugin : "application"
    mainClassName = "com.YYYY.XXXX.Main"

    repositories{
        mavenCentral()
    }

    dependencies{
        compile "asm:asm:3.3.1"
        compile "com.google.code.gson:gson:2.8.5"
        compile "org.ow2.asm:asm-all:5.0.3"
        compile "org.apache.commons:commons-lang3:3.7"
        compile "com.googlecode.json-simple:json-simple:1.1.1"
        compile fileTree(dir: 'libs', includes: ['*.jar'])

    }

    sourceSets{
        main.java.srcDir "src/main"
    }
    jar{
        from configurations.compile.collect {zipTree it}
        manifest.attributes "Main-Class":"com.YYYY.XXXX.Main"
    }
    task run(type: Exec,dependsOn: jar,overwrite: true){
        executable 'java'
        args '-jar',"$jar.archivePath",'/Users/XXXX/Desktop/','/Users/XXXX/Downloads/cloud/'
        doLast{
            println "Successfully done the obfuscation"
        }
    }

这里使用Main类并使其运行。 我怎样才能实现上述目标?

1 个答案:

答案 0 :(得分:0)

从Task:

查看finalizedBy()方法

https://docs.gradle.org/current/dsl/org.gradle.api.Task.html#org.gradle.api.Task:finalizedBy(java.lang.Object[])

这应该做你需要的:

compileJava.finalizedBy "run" 

顺便说一句,有一个更专业的JavaExec任务来执行java应用程序:

https://docs.gradle.org/current/dsl/org.gradle.api.tasks.JavaExec.html