在以前版本的Gradle的android插件中,我可以使用自己的任务,使用以下方法获取jar依赖项的路径:
android.libraryVariants.all { variant ->
task "copyDependencies${variant.name.capitalize()}"(type: Copy) {
configurations.compile.files().each { dependency ->
from dependency.path
}
into project.projectDir.path + "/build/libs/${variant.name}"
}
}
但是在这个插件的最新版本中, compile
传递给不推荐使用,他们引入了 api
和 implementation
配置,所以当我尝试使用前面的代码时,gradle说:
不允许直接解析配置'api'
是否有任何关于这一新变化的建议?
UPDATE
我有一个依赖项列表和过滤器配置这样做:
android.libraryVariants.all { variant ->
task "copyDependencies${variant.name.capitalize()}"(type: Copy) {
from {
variant.getCompileConfiguration().files().each { dependency ->
configurations.api.getDependencies().each { configDep ->
if (dependency.name.contains(configDep.name)) {
from dependency.path
}
}
}
}
into project.projectDir.path + "/build/libs/${variant.name}"
}
}
但是当项目B依赖于项目A时,这个解决方案仍然存在问题 . 两者都定义了这个任务,Gradle没有构建 .
2 回答
请参阅用户指南的chapter 48.4以查找所有可用配置以及要使用和/或解决的配置 .
最后,我从配置中找到了复制依赖关系的解决方案: