Конструктор DefaultSourceDirectorySet объявлен устаревшим.Как пользоваться сервисом ObjectFactory? - PullRequest
0 голосов
/ 24 ноября 2018

Я недавно обновился до версии 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 Iget:

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

Связано

Я обнаружил создать файл version.txt в директории проекта с помощью задачи build.gradle (gradle 5.0) но у меня нет подобных конструкций, поэтому я не знаю, как это будет применяться.

Я обнаружил, что это осуждение упомянуто в примечаниях к выпуску на https://docs.gradle.org/5.0-milestone-1/release-notes.html, но они говорят

В этом выпуске Gradle служба ObjectFactory, которая является частью общедоступного API, теперь включает метод для создания экземпляров SourceDirectorySet.Плагины теперь могут использовать этот метод вместо внутренних типов.

, но я не вижу, как.

Я также нашел интерфейс SourceDirectorySet в https://docs.gradle.org/current/javadoc/org/gradle/api/file/SourceDirectorySet.htmlно я не вижу, как его использовать.

Репозиторий шаблонов: https://github.com/PHPirates/kotlin-template-project

1 Ответ

0 голосов
/ 07 декабря 2018

Обновление 2019-01-23 Пять минут назад kotlin 1.3.20 был выпущен , а также обновлен в хранилище Gradle , поэтому эту проблему следует решитьобновив плагин Kotlin Gradle до 1.3.20.

Обновление 2019-01-11 Целевая версия в Выпуск Youtrack KT-26808 только что обновлен до 1.3+0,20.Вы можете просмотреть последнюю выпущенную версию в репозиториях Gradle здесь , но на данный момент есть еще открытых проблем для 1.3.20 .

Обновление 2018-12-17 Предупреждение об устаревании исправлено в коммите https://github.com/JetBrains/kotlin/commit/67e82a54e5ee529116e881953f93a4c8f216e33a, Проблема Youtrack закрыта.Теперь ожидаем выпуска .

Как @Javaru указал , об этом уже сообщалось (в сентябре 2018 г.) на выпуск Youtrack KT-26808 .

Использование информации из комментария Ланса в ссылке, на которую Томас Дэвид Бейкер указал :

Ответ:

Если вы получаете это предупреждение, когда не используете DefaultSourceDirectorySet напрямую, это, вероятно, исходит от используемого вами плагина Gradle.Вы можете проверить это, используя --warning-mode all --stacktrace флаги для сборки Gradle, например, ./gradlew assemble --warning-mode all --stacktrace.

В данном конкретном случае это плагин Kotlin Gradle, они используют его в DefaultKotlinSourceSet.kt # L140-L155 :

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

Мы можем верить, что они решат проблему вовремя, поэтому не беспокойтесь о предупреждении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...