Как добавить задачу в пользовательский плагин Gradle, зависит от задачи, которая определена в другом плагине? - PullRequest
0 голосов
/ 05 декабря 2018

например, у меня есть плагин: открытый класс PluginA реализует плагин.

и я создам задачу taskA .Теперь я хочу установить: taskA.dependsOn taskB , но taskB определен в PluginB.

Возможно ли это сделать, если можно, как это сделать?

1 Ответ

0 голосов
/ 05 декабря 2018

Вам не нужно знать, что taskB происходит от PluginB, чтобы создать зависимость от taskA: вы можете просто ссылаться на taskB по его имени, как показано ниже:

class PluginA implements Plugin<Project> {
    void apply(Project project) {

        Task taskA = project.task('taskA') {
            doLast {
                println 'Executing task A from plugin A'
            }
        }
        // create dependency from taskA to taskB
        project.tasks.matching { it.name == 'taskB'}.each {
            taskA.dependsOn it
        }
    }
}

Обратите внимание, что если ваш потребительский проект, который применяет PluginA, не применяет PluginB, зависимость не будет создана.Возможно, вам нужно / нужно автоматически применять PluginB при применении PluginA.

Другим способом будет создание этой зависимости только при применении pluginB с использованием метода pluginManager.withPlugin :

class PluginA implements Plugin<Project> {
    void apply(Project project) {

        Task taskA = project.task('taskA') {
            doLast {
                println 'Executing task A from plugin A'
            }
        }
        project.pluginManager.withPlugin('pluginB'){                
            println "pluginB applied => adding dependency from taskA to taskB"
            project.afterEvaluate{
                taskA.dependsOn project.tasks.getByName('taskB')
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...