我最近更新到gradle版本5.0-rc-4,并且在运行./gradlew assemble
(或任何其他任务)时,现在收到以下消息:
Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
使用./gradlew assemble --warning-mode all
时,我得到:
> Configure project :
The DefaultSourceDirectorySet constructor has been deprecated. This is scheduled to be removed in Gradle 6.0. Please use the ObjectFactory service to create instances of SourceDirectorySet instead.
但是在接下来的build.gradle
中,我看不到我在哪里使用任何DefaultSourceDirectorySet
,所以这是关于什么警告,为了与Gradle 6.0兼容我需要更改什么?
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.3.10'
}
dependencies {
compile 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
}
repositories {
mavenCentral()
mavenLocal()
jcenter()
}
相关
我找到了create version.txt file in project dir via build.gradle task(gradle 5.0),但是我没有这样的构造,所以我不知道它的用法。
我发现https://docs.gradle.org/5.0-milestone-1/release-notes.html的发行说明中提到了这种弃用,但他们说
在此Gradle版本中,作为公共API一部分的ObjectFactory服务现在包含一种创建SourceDirectorySet实例的方法。插件现在可以使用此方法代替内部类型。
但我不知道如何。
我还在https://docs.gradle.org/current/javadoc/org/gradle/api/file/SourceDirectorySet.html找到了SourceDirectorySet
界面,但看不到如何使用它。
答案 0 :(得分:23)
更新2019-01-23 五分钟前,kotlin 1.3.20已被released并在Gradle repository中进行了更新,因此应通过更新Kotlin来解决此问题。 Gradle插件1.3.20。
更新2019-01-11 Youtrack issue KT-26808中的目标版本已更新为1.3.20。您可以在Gradle存储库here中查看最新发布的版本,但目前仍有很多open issues for 1.3.20。
更新2018-12-17 弃用警告已在提交https://github.com/JetBrains/kotlin/commit/67e82a54e5ee529116e881953f93a4c8f216e33a中修复,Youtrack问题已解决。现在等待release推出。
作为@Javaru pointed out,已经在Youtrack issue KT-26808上(2018年9月)进行了报道。
在链接Lance's comment中使用来自Thomas David Baker pointed to的信息:
如果您在不直接使用DeferredResult<Wrapper<Object>> deferredResult = new DeferredResult<>();
ForkJoinPool.commonPool().submit(() -> {
try {
Wrapper<Object> response = ...
deferredResult.setResult(response);
} catch (Exception e) {
deferredResult.setErrorResult(e);
}
});
return deferredResult;
时收到此警告,则可能来自您使用的Gradle插件。您可以使用DefaultSourceDirectorySet
标志来进行Gradle构建,例如--warning-mode all --stacktrace
。
在这种情况下,它是Kotlin Gradle插件,他们在DefaultKotlinSourceSet.kt#L140-L155上使用它:
./gradlew assemble --warning-mode all --stacktrace
我们相信他们会及时解决问题,所以不必担心警告。