Что такое метод kotlin ("...") в Gradle Kotlin DSL? - PullRequest
1 голос
/ 24 марта 2020

Что это за метод kotlin("..."), описанный в руководстве Kotlin "Использование Gradle"? Они упоминают этот синтаксис .

plugins {
    kotlin("jvm") version "1.3.71"
}

Я вижу, что он используется и в других местах, а не только в плагине. Например, он может быть использован для получения Kotlin зависимостей .

dependencies {
    implementation(kotlin("stdlib-jdk8"))
}

Я пробовал поискать в Google, но у меня возникают проблемы с поиском результатов, так как Gradle использует Kotlin DSL а также и результаты для обоих смешиваются.

Выполнение gradle init --dsl kotlin --type kotlin-library выводит "нормальный" синтаксис (см. ниже приведенный вывод) , и я не могу найти документацию по этому странному kotlin("...") часть о том, что он может и не может быть использован. Если я использую kotlin("...") подход, как описано выше, он все еще работает, но я пытаюсь выяснить, что это такое и откуда оно.

plugins {
  // Apply the Kotlin JVM plugin to add support for Kotlin.
  id("org.jetbrains.kotlin.jvm") version "1.3.71"

  // Apply the java-library plugin for API and implementation separation.
  `java-library`
}

// ...

dependencies {
  // Align versions of all Kotlin components
  implementation(platform("org.jetbrains.kotlin:kotlin-bom"))

  // Use the Kotlin JDK 8 standard library.
  implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")

  // Use the Kotlin test library.
  testImplementation("org.jetbrains.kotlin:kotlin-test")

  // Use the Kotlin JUnit integration.
  testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
}

1 Ответ

1 голос
/ 24 марта 2020

Это функция расширения, предоставляемая Gradle. Он распространяется в gradle-kotlin-dsl-<version>.jar!/org/gradle/kotlin/dsl/KotlinDependencyExtensions.kt. Узнайте больше, нажав Ctrl + клик по имени функции в IDE.

/**
 * Builds the dependency notation for the named Kotlin [module] at the given [version].
 *
 * @param module simple name of the Kotlin module, for example "reflect".
 * @param version optional desired version, unspecified if null.
 */
fun DependencyHandler.kotlin(module: String, version: String? = null): Any =
    "org.jetbrains.kotlin:kotlin-$module${version?.let { ":$version" } ?: ""}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...