【发布时间】: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