例如,我有一个插件: 公共类PluginA实现了插件。
,我将创建一个任务 taskA 。现在我要设置: taskA.dependsOn taskB ,但是taskB是在PluginB中定义的。
是否可以做到这一点?
答案 0 :(得分:0)
您不必知道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
。
另一种方法是仅在使用pluginManager.withPlugin方法应用pluginB
时创建此依赖项:
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')
}
}
}
}