我正在尝试编写一个插件,project.dependencies
根据插件扩展对象中收集的信息添加依赖项。但这似乎是不可能的。
实际上,来自扩展对象的数据仅在新任务或project.afterEvaluate
闭包中可用,但在这些地方添加的依赖项会被忽略。
以下代码尝试添加依赖,afterEvaluate
但依赖被忽略:
apply plugin: MyPlugin
myplugin {
version '1.0'
}
class MyPlugin implements Plugin<Project> {
void apply(Project project) {
project.extensions.create('myplugin', MyPluginExtension)
project.afterEvaluate {
def version = project.myplugin.version
project.dependencies.add("compile", "org.foo:bar:$version") // --> ignored
}
}
}
class MyPluginExtension {
def version
}
在以下代码中,依赖注入有效,但我无权访问扩展对象:
apply plugin: MyPlugin
myplugin {
version '1.0'
}
class MyPlugin implements Plugin<Project> {
void apply(Project project) {
project.extensions.create('myplugin', MyPluginExtension)
def version = project.myplugin.version // == null
project.dependencies.add("compile", "org.foo:bar:$version") // --> fail because $version is null
}
}
class MyPluginExtension {
def version
}
有解决办法吗?