【问题标题】:How to fix “The libsDir method has been deprecated.” when it isn't used?如何修复“libsDir 方法已被弃用”。什么时候不使用?
【发布时间】:2021-03-30 08:09:47
【问题描述】:

在运行我们的 gradle 构建时(使用 gradle 6.8.3),我们得到:

> Configure project :buildSrc
The Project.libsDir property has been deprecated. This is scheduled to be removed in Gradle 7.0. Please use the libsDirectory property instead. See https://docs.gradle.org/6.8.3/dsl/org.gradle.api.Project.html#org.gradle.api.Project:libsDir for more details.
    at org.gradle.api.plugins.internal.DefaultBasePluginConvention.getLibsDir(DefaultBasePluginConvention.java:76)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at groovy.lang.MetaBeanProperty.getProperty(MetaBeanProperty.java:59)
    at org.gradle.internal.extensibility.DefaultConvention$ExtensionsDynamicObject.getProperties(DefaultConvention.java:248)
    at org.gradle.groovy.scripts.BasicScript$ScriptDynamicObject.getProperties(BasicScript.java:116)
    at org.gradle.groovy.scripts.BasicScript.getProperties(BasicScript.java:75)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at groovy.lang.MetaBeanProperty.getProperty(MetaBeanProperty.java:59)
    at org.gradle.groovy.scripts.BasicScript$ScriptDynamicObject.tryGetProperty(BasicScript.java:143)
    at org.gradle.groovy.scripts.BasicScript.getProperty(BasicScript.java:66)
    at ArtifactoryExtensions_76dew9e82ctadr6jidn6q1of1.getGradleProperty(ourstuff/buildSrc/src/main/groovy/ArtifactoryExtensions.groovy:50)

这是那个 groovy 文件中对应的方法。

String getGradleProperty(String key) {
    if (properties[key]) { // this is line 50
        return properties[key]
    }
    throw new GradleException("key '$key' is NOT defined in any gradle.properties file!")
}

如您所见:第 50 行使用(项目)properties,但不是 libsDir。我做了一个git grep libsDir,它显示了我们整个存储库中libsDir 个用法。

那么:对于与我的代码无关的警告,我如何让我们的构建无警告,至少不能以提供任何线索来解决问题的方式?

注意:我尝试创建一个 mcve,但不幸的是,当只是在独立的 build.gradle 文件中定义+使用该方法时,没有警告。

【问题讨论】:

  • 我不是 Gradle 专家,所以这是在黑暗中拍摄的。从堆栈跟踪来看,您正在使用的某个插件似乎正在幕后访问libsDir。会是这样吗?如果是这样,您的插件是最新的吗?
  • 基本插件是 gradle 交付的一部分docs.gradle.org/current/dsl/…
  • 试试project.getProperties()而不是properties

标签: java gradle groovy


【解决方案1】:

尝试project.getProperties() 而不是properties


properties 尝试获取/收集可能是任务或其他对象的属性的问题原因。

project.getProperties() - 显然需要项目的属性

object.getProperties() - 如果对象不包含 propertiesgetProperties() groovy 会尝试扫描所有内部对象属性并命中已弃用的属性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 2022-09-23
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2023-02-19
    • 1970-01-01
    相关资源
    最近更新 更多