我有一个使用以下代码的自定义Gradle插件:
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) {
}
})
这似乎可以在命令行中正常工作。但是,如果我从Android Studio刷新gradle,它会使用Cannot change configuration :app:compile after it has been resolved
我的猜测是有某种缓存或Studio构建更多变种(我只是从命令行运行我想要的变种的汇编,每次都有效。)
有谁知道可能会发生什么以及如何最好地解决这个问题?
答案 0 :(得分:2)
我设法解决了这个问题。这样做的方法是添加DependencyResolutionListener
,在其中添加依赖项,然后删除侦听器,以便它不会尝试在以后的解决步骤中添加它们。
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) {}
})
我有一个使用此here
的插件的工作示例