在 Gradle 项目中,我有多个子项目。我需要将依赖项从一个子项目的配置复制到另一个子项目的配置。我可以使用以下内容来实现此目的,改编自此答案 here :
task copyDependencies(type: Copy) {
from project(":sub").configurations.compile
into "${buildDir}/libraries"
}
不幸的是,在 Gradle 5.1 中,这会生成以下弃用警告(为了简洁而被截断):
The configuration :sub:compile was resolved without accessing the project in a safe manner. ... This behaviour has been deprecated and is scheduled to be removed in Gradle 6.0.
现在对于 Gradle 5.1 及更高版本执行此操作的最佳方法是什么?
最佳答案
出现警告是因为当构建并行运行时,跨越项目边界可能会导致问题。
执行此操作的正确方法是让 Gradle 知道声明 copyDependencies
任务的项目将需要项目 :sub
的依赖项。
您可以通过执行以下操作来实现此目的:
configurations {
dependenciesToCopy
}
dependencies {
dependenciesToCopy project(':sub')
}
task copyDependencies(type: Copy) {
from configurations.dependenciesToCopy
into "${buildDir}/libraries"
}
这将使 Gradle 在您的项目和 sub
项目的依赖项解析之间正确创建执行依赖项。
Relevant discussion在 Gradle 论坛上。
关于gradle - 从另一个子项目复制 Gradle 依赖项而不发出弃用警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54167909/