Gradle DefaultSourceDirectorySet构造函数已被弃用。如何使用ObjectFactory服务?

Gradle DefaultSourceDirectorySet构造函数已被弃用。如何使用ObjectFactory服务?,gradle,Gradle,我最近更新到gradle版本5.0-rc-4,当运行/gradlew assembly(或任何其他任务)时,我现在收到以下消息: 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 assembly-

我最近更新到gradle版本5.0-rc-4,当运行
/gradlew assembly
(或任何其他任务)时,我现在收到以下消息:

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 assembly--warning模式时,我得到:

> 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()
}
相关的

我发现了,但我没有这样的结构,所以我不知道它将如何应用

我在上的发行说明中发现了这一点,但是他们说

在这个版本的Gradle中,ObjectFactory服务是公共API的一部分,现在包含了一个创建SourceDirectorySet实例的方法。插件现在可以使用这个方法而不是内部类型

但我不知道怎么做

我还在上找到了
SourceDirectorySet
接口,但我不知道如何使用它


模板库:

更新2019-01-23五分钟前,kotlin 1.3.20已经更新,并且也在中进行了更新,因此应通过将kotlin Gradle插件更新为1.3.20来解决此问题

更新2019-01-11中的目标版本刚刚更新为1.3.20。您可以在Gradle存储库中查看最新发布的版本,但目前仍有很多

更新2018-12-17弃用警告已在提交中修复,Youtrack问题已解决。现在正在等待一个新的开始

作为@Javaru,这一点已在上报告(2018年9月)

使用链接中的信息:

答复: 如果您在未直接使用
DefaultSourceDirectorySet
时收到此警告,则这可能来自您使用的Gradle插件。您可以使用Gradle构建的
--warning mode all--stacktrace
标志来检查这一点,就像
/gradlew assembly--warning mode all--stacktrace
一样

在这种情况下,是Kotlin Gradle插件,他们在以下位置使用它:

private val createDefaultSourceDirectorySet:(名称:String?,解析程序:FileResolver?->SourceDirectorySet=run{
val klass=DefaultSourceDirectorySet::class.java
val defaultConstructor=klass.constructorNull(String::class.java,FileResolver::class.java)
if(defaultConstructor!=null&&defaultConstructor.getAnnotation(java.lang.Deprecated::class.java)==null){
//TODO:当渐变<2.12过时时下降
{name,resolver->defaultConstructor.newInstance(name,resolver)}
}否则{
//(代码省略)
}
}

我们可以相信他们会及时解决问题,所以不要担心警告。

我猜这条反对消息来自您正在使用的插件。在本例中,它可能来自kotlin插件。@mkobit这很有意义。那样的话,我相信他们会及时解决的。当警告消失时,或者当有人发现警告来自何处时,我会确保这个问题得到回答。这似乎是相关的——看起来这已经向Kotlin团队报告了:@Javaru,我明白了,三个月前。。。谢谢你的链接!将其添加到当前答案中。感谢您保持此问题的最新状态。也许在顶部链接到问题本身也不错。不过,似乎还有很多未公开的门票:@rekire,不客气!同意,我只是添加了一个额外的链接,这样它就不那么隐蔽了。感谢第二个链接,我不熟悉发布计划,但这似乎有很多问题!我对搜索也不是很熟悉,但我尝试了搜索,我有一个1.3.30的错误报告
private val createDefaultSourceDirectorySet: (name: String?, resolver: FileResolver?) -> SourceDirectorySet = run {
    val klass = DefaultSourceDirectorySet::class.java
    val defaultConstructor = klass.constructorOrNull(String::class.java, FileResolver::class.java)

    if (defaultConstructor != null && defaultConstructor.getAnnotation(java.lang.Deprecated::class.java) == null) {
        // TODO: drop when gradle < 2.12 are obsolete
        { name, resolver -> defaultConstructor.newInstance(name, resolver) }
    } else {
        // (code omitted)
    }
}