Задание doLast не выполняется - PullRequest
0 голосов
/ 11 января 2019

У меня есть пользовательское задание, которое зависит от плагина 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
            }
        }
    }

что я делаю не так?

1 Ответ

0 голосов
/ 11 января 2019

Вы не должны запускать выполнение задачи из другого действия задачи (используя task.execute()): даже если это доступно в Gradle API, его не следует использовать. Вместо этого используйте зависимости задач (см. Документацию по зависимостям задач здесь )

РЕДАКТИРОВАТЬ: из вашего комментария ниже, если вы просто хотите принудительно выполнить задачу 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 : из ваших последних комментариев: кажется, вы столкнулись с известной проблемой, похожей на Причины пользовательского плагина gradle: Невозможно настроить расширение «публикации»

Обходной путь должен заменить:

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"
    }
}
...