We get the warnings:
“The distsDir method has been deprecated.”
“The libsDir method has been deprecated.”
But the line of code contains references to neither:
version = properties['project.version']
The stack trace:
build.gradle:13
at org.gradle.api.plugins.internal.DefaultBasePluginConvention.getDistsDir(DefaultBasePluginConvention.java:60)
at java.lang.reflect.Method.invoke(Method.java:498)
at groovy.lang.MetaBeanProperty.getProperty(MetaBeanProperty.java:59)
at org.gradle.internal.extensibility.DefaultConvention$ExtensionsDynamicObject.getProperties(DefaultConvention.java:256)
at org.gradle.groovy.scripts.BasicScript$ScriptDynamicObject.getProperties(BasicScript.java:114)
at org.gradle.groovy.scripts.BasicScript.getProperties(BasicScript.java:73)
at java.lang.reflect.Method.invoke(Method.java:498)
at groovy.lang.MetaBeanProperty.getProperty(MetaBeanProperty.java:59)
at org.gradle.groovy.scripts.BasicScript$ScriptDynamicObject.tryGetProperty(BasicScript.java:141)
at org.gradle.groovy.scripts.BasicScript.getProperty(BasicScript.java:64)
at build.run(/.../acme/build.gradle:13)
(omitting caller stack trace)
Best I can tell, I ask for the property “project.version”, but it is somehow looking up “distsDir” instead, and then proceeds to complain about my script using deprecated stuff, when it’s Gradle internal logic using the deprecated stuff.
The docs don’t say what to replace it with (which is a problem too - anything deprecated should say what to do instead!) but it does say what it defaults to anyway, so you could just use that ("${project.buildDir}/${project.distsDirName}") and neither of those appear to be deprecated.
Doesn’t help my situation though, because I’m not the one calling it in the first place - Gradle seems to be calling it internally.
Thanks, that’s useful. But I’m still baffled as to why distsDir and libDir as file objects would be deprecated in favour of relative string path names. Surely file objects are vastly more useful.
Yeah, I agree. The change they were removed in was doing something else entirely - making some properties in the archive tasks lazy - and didn’t seem to require deprecating the properties over in this location.
Maybe the plan was to add back distsDir with a different type in 6.0, but still, in other places where I’ve seen that happen, the new lazy property got a different name.
For the sake of clarity, Gradle 6.0 introduced libsDirectory and distsDirectory on the base convention.
In Gradle 7.1, a base extension is added, having those properties as well, since conventions are entering a deprecation / removal cycle.
This should be transparent for build authors though.