gradle - 从另一个子项目复制 Gradle 依赖项而不发出弃用警告

标签 gradle

在 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/

相关文章:

android - 以编程方式获取 manifestPlaceholders

gradle - 根据gradle中的配置文件来构建项目

Android buildTypes 与 productFlavors 错误

Android Studio gradle 刷新破坏项目

java - Unity 插件在使用通知 Compat Builder 时出现错误

android - `Run app` 和 `Rebuild` 运行不同的命令

java - 使用sdkman安装后如何设置gradle路径

android - 从Android项目构建jar文件时,任务 ':app:kaptGenerateStubsDebugKotlin'的执行失败

android - 使用 Robolectric 和 AppCompat 运行 Gradle 测试导致 NullPointerException

android - gradle 任务只运行最后一个命令