自定义插件从Android Studio中添加依赖beforeResolve [英] Custom plugin adding dependency beforeResolve from Android Studio
问题描述
我有一个使用以下code定制的摇篮插件:
project.getGradle()的addListener(新DependencyResolutionListener(){
@覆盖
无效beforeResolve(ResolvableDependencies resolvableDependencies){
depsToAdd.each {DEP - >
compileConfig.getDependencies()
。新增(project.getDependencies()
.create(DEP)
} } @覆盖
无效afterResolve(ResolvableDependencies resolvableDependencies){ }
})
这似乎是工作在命令行罚款。不过,如果我的gradle刷新从Android的工作室,它 barfs无法更改配置:应用程序:编译解决后
我的猜测是有某种缓存正在进行或Studio建立更多的变种(我只是运行的组合从我的命令行想要的变体,它每一次的作品)。
有谁知道可能什么,以及如何最好地解决此问题?
我设法想出解决办法。的方式做到这一点是添加 DependencyResolutionListener
在其中添加依赖关系,然后删除侦听器,因此它不会试图将其添加在以后的解决步骤。
compileDeps = project.getConfigurations()。GetByName方法(编译)。getDependencies()
project.getGradle()。的addListener(新DependencyResolutionListener(){
@覆盖
无效beforeResolve(ResolvableDependencies resolvableDependencies){
compileDeps.add(project.getDependencies()创建(org.foo:bar:$version))
project.getGradle()的removeListener(本)
} @覆盖
无效afterResolve(ResolvableDependencies resolvableDependencies){}
})
I have a custom Gradle plugin that uses the following code:
project.getGradle().addListener(new DependencyResolutionListener() {
@Override
void beforeResolve(ResolvableDependencies resolvableDependencies) {
depsToAdd.each { dep ->
compileConfig.getDependencies()
.add(project.getDependencies()
.create(dep)
}
}
@Override
void afterResolve(ResolvableDependencies resolvableDependencies) {
}
})
This seems to work fine from command line. However, if I refresh gradle from Android Studio, it barfs with Cannot change configuration :app:compile after it has been resolved
My guess is there is some sort of caching going on or Studio builds more variants (I just run the assemble for the variant I want from command line which works every time).
Does anyone know what might be going on and how best to resolve this?
I managed to figure this out. The way do this is to add a DependencyResolutionListener
in which you add the dependencies and then remove the listener so it doesn't try to add them on later resolution steps.
compileDeps = project.getConfigurations().getByName("compile").getDependencies()
project.getGradle().addListener(new DependencyResolutionListener() {
@Override
void beforeResolve(ResolvableDependencies resolvableDependencies) {
compileDeps.add(project.getDependencies().create("org.foo:bar:$version"))
project.getGradle().removeListener(this)
}
@Override
void afterResolve(ResolvableDependencies resolvableDependencies) {}
})
I have a working example of a plugin that uses this here
这篇关于自定义插件从Android Studio中添加依赖beforeResolve的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!