Вам не нужно знать, что 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')
}
}
}
}