How to fix “The libsDir method has been deprecated.” when it isn't used?

Viewed 338

When running our gradle build (using gradle 6.8.3), we get:

> 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)

This is the corresponding method in that groovy file.

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!")
}

As you can see: line 50 uses (the project) properties, but not libsDir. I did a git grep libsDir, and that shows zero usages of libsDir in our whole repository.

So: how do I get our build warning-free for warnings that don't relate to my code, at least not in a way that gives any clues how to fix the problem?

Note: I tried to create a mcve, but unfortunately, when just defining+using that method in a standalone build.gradle file, no warnings.

1 Answers

try project.getProperties() instead of properties


the reason of issue that properties tries to get/collect properties on current object that could be task or something else.

project.getProperties() - clearly takes properties on project

object.getProperties() - if object does not contain properties or getProperties() groovy tries to scan all internal object properties and hits deprecated property

Related