Gradle plugin personalizado: agregar dependencia desde objeto de extensión
Estoy tratando de escribir un complemento que añade dependencias aproject.dependencies
De acuerdo a las informaciones recogidas en el complemento de extensión del objeto. Pero parece ser imposible.
De hecho, los datos del objeto de extensión solo están disponibles en una nueva tarea o enproject.afterEvaluate
Cierre, pero las dependencias agregadas en esos lugares son ignoradas.
El siguiente código intenta agregar la dependencia enafterEvaluate
pero la dependencia se ignora:
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
}
En el siguiente código, la inyección de dependencia funciona, pero no tengo acceso al objeto de extensión:
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
}
¿Hay alguna solución?