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
}
解決策はありますか?