android - doLast gradle任务未运行

标签 android gradle groovy gradle-plugin maven-publish

我有一个依赖于maven-publish插件的自定义任务。在运行maven-publish插件之前,我的自定义任务需要命令行中的一些参数。

为此,我尝试对自定义任务执行doLast闭合,但是发布任务未运行。

 class MyGradlePlguins implements Plugin<Project> {
        @Override
        void apply(Project project) {
            project.getPluginManager().apply("maven-publish")
            BuildAndUpload buildAndUpload = project.getTasks().create("BuildAndUpload", BuildAndUpload.class);
            project.getTasks().getByName("buildAndUploadTest").doLast {
                println "running publish task from the doLast clause"
                project.getTasks().getByName("publish").execute() <-- doens't throw error but doesn't run either
            }
        }
    }

我究竟做错了什么?

最佳答案

您不应该从另一个任务 Action (使用task.execute())触发任务的执行:即使Gradle API中提供了此功能,也不应该使用它。请改用任务依赖项(请参阅任务依赖项here的文档)

编辑:从下面的评论中,如果您只想在自定义任务后强制执行publish任务,则:

class MyGradlePlguins implements Plugin<Project> {
    @Override
    void apply(Project project) {
        project.getPluginManager().apply("maven-publish")
        BuildAndUpload buildAndUpload = project.getTasks().create("BuildAndUpload", BuildAndUpload.class);

        // Make your task 'finalized by' task "publish"
        buildAndUpload.finalizedBy project.tasks.getByName('publish')  

        // You can also have the other way:
        // project.tasks.getByPath(':app:publish').dependsOn buildAndUpload           
    }
}

EDIT2 :从您的最近评论开始:您似乎遇到了与custom gradle plugin causes: Cannot configure the 'publishing' extension类似的已知问题

一种解决方法是替换:
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java

        }
    }
    repositories {
        maven {
            url "../maven-repo"
        }
    }
}

带有:
publishing.publications {
    mavenJava(MavenPublication) {
        from components.java

    }
}
publishing.repositories {
    maven {
        url "../maven-repo"
    }
}

关于android - doLast gradle任务未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54146560/

相关文章:

grails - 如何在 Grails Geb/Spock 测试用例中获取 sessionFactory?

java - 接口(interface)值始终为空

gradle - Gradle-创建所有子项目的Tar

Android Studio Gradle NullPointerException 每次重启

Java + Groovy 联合项目的 JavaDoc

performance - Grails 性能问题

android - mediaStorageDir.mkdirs() 不创建目录

javascript - 手机网站分享按钮调用iOS/Android系统分享对话框

android - 在定义了不同类的另一个 View 上使用微调器 (Android)

android - 添加 glide 依赖项弄乱了 appcompat