【发布时间】:2017-12-01 10:39:36
【问题描述】:
在 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 pass to deprecated 并且他们引入了api 和implementation 配置,所以当我尝试使用之前的代码时,gradle 说:
不允许直接解析配置'api'
对引入的这一新变化有何建议?
更新
我有一个依赖列表和过滤器用于执行此操作的配置:
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 都不会构建。
【问题讨论】: