Wtyczka niestandardowa Gradle: dodaj zależność od obiektu rozszerzenia
Próbuję napisać wtyczkę, która dodaje zależnościproject.dependencies
zgodnie z informacjami zebranymi w obiekcie rozszerzenia wtyczki. Ale wydaje się to niemożliwe.
Rzeczywiście, dane z obiektu rozszerzenia są dostępne tylko w nowym zadaniu lub wproject.afterEvaluate
zamknięcie, ale zależności dodane w tych miejscach są ignorowane.
Poniższy kod próbuje dodać zależność wafterEvaluate
ale zależność jest ignorowana:
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
}
W poniższym kodzie wtrysk zależności działa, ale nie mam dostępu do obiektu rozszerzenia:
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
}
Czy istnieje rozwiązanie?