Spec-Zone.ru › Kotlin 1.8

Параметры компилятора в плагине Kotlin Gradle

Каждая версия Kotlin включает компиляторы для поддерживаемых платформ: JVM, JavaScript и нативные двоичные файлы для поддерживаемых платформ.

Эти компиляторы используются:

  • IDE при нажатии на кнопку Компилировать или Запустить для вашего проекта Kotlin.

  • Gradle при вызове gradle build в консоли или IDE.

  • Maven при вызове mvn compile или mvn test-compile в консоли или IDE.

Вы также можете запустить компиляторы Kotlin вручную из командной строки, как описано в руководстве Работа с компилятором командной строки.

Как определить параметры

Компиляторы Kotlin имеют ряд параметров для настройки процесса компиляции.

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

compileKotlin.compilerOptions.freeCompilerArgs.add("-Xexport-kdoc")
compileKotlin {
    compilerOptions.freeCompilerArgs.add("-Xexport-kdoc")
}

//or

compileKotlin {
    compilerOptions {
        freeCompilerArgs.add("-Xexport-kdoc")
    }
}

При компиляции для JVM задачи называются compileKotlin для производственного кода и compileTestKotlin для тестового кода. Задачи для настраиваемых наборов исходных файлов называются в соответствии с их шаблонами compile<Name>Kotlin.

Названия задач в проектах Android содержат имена вариантов сборки и следуют шаблону compile<BuildVariant>Kotlin, например, compileDebugKotlin или compileReleaseUnitTestKotlin.

При компиляции для JavaScript задачи называются compileKotlinJs для производственного кода и compileTestKotlinJs для тестового кода, и compile<Name>KotlinJs для настраиваемых наборов исходных файлов.

Чтобы настроить отдельную задачу, используйте её имя. Примеры:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
// ...

val compileKotlin: KotlinCompilationTask<*> by tasks

compileKotlin.compilerOptions.suppressWarnings.set(true)
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
// ...

tasks.named('compileKotlin', KotlinCompilationTask) {
    compilerOptions {
        suppressWarnings.set(true)
    }
}

Обратите внимание, что с Gradle Kotlin DSL вы должны сначала получить задачу из tasks проекта.

Используйте типы Kotlin2JsCompile и KotlinCompileCommon для целей JS и common соответственно.

Также можно настроить все задачи компиляции Kotlin в проекте:

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask<*>>().configureEach {
    compilerOptions { /*...*/ }
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask).configureEach {
    compilerOptions { /*...*/ }
}

Вот полный список параметров для задач Gradle:

Атрибуты, специфичные для JVM

Имя

Описание

Возможные значения

Значение по умолчанию

javaParameters

Генерировать метаданные для Java 1.8 reflection по параметрам метода

false

jvmTarget

Целевая версия генерируемого байт-кода JVM

"1.8", "9", "10", ..., "19". Также см. Типы параметров компилятора

"1.8"

noJdk

Не включать автоматически среду выполнения Java в classpath

false

Атрибуты, общие для JVM, JS и JS DCE

Имя

Описание

Возможные значения

Значение по умолчанию

allWarningsAsErrors

Сообщать об ошибке, если есть предупреждения

false

suppressWarnings

Не генерировать предупреждения

false

verbose

Включить подробный вывод журнала. Работает только при включенном уровне отладки журнала Gradle

false

freeCompilerArgs

Список дополнительных аргументов компилятора. Вы можете использовать экспериментальные аргументы -X здесь тоже. См. пример

[]

Мы собираемся устареть атрибут freeCompilerArgs в будущих релизах. Если вам не хватает какого-либо параметра в Kotlin Gradle DSL, пожалуйста, сообщите об этом.

Пример использования дополнительных аргументов через freeCompilerArgs

Используйте атрибут freeCompilerArgs для передачи дополнительных (включая экспериментальные) аргументов компилятора. Вы можете добавить один аргумент к этому атрибуту или список аргументов:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
// ...

val compileKotlin: KotlinCompilationTask<*> by tasks

// Single experimental argument
compileKotlin.compilerOptions.freeCompilerArgs.add("-Xexport-kdoc")
// Single additional argument, can be a key-value pair
compileKotlin.compilerOptions.freeCompilerArgs.add("-opt-in=org.mylibrary.OptInAnnotation")
// List of arguments
compileKotlin.compilerOptions.freeCompilerArgs.addAll(listOf("-Xno-param-assertions", "-Xno-receiver-assertions", "-Xno-call-assertions"))
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
// ...

tasks.named('compileKotlin', KotlinCompilationTask) {
    compilerOptions {
        // Single experimental argument
        freeCompilerArgs.add("-Xexport-kdoc")
        // Single additional argument, can be a key-value pair
        freeCompilerArgs.add("-opt-in=org.mylibrary.OptInAnnotation")
        // List of arguments
        freeCompilerArgs.addAll(["-Xno-param-assertions", "-Xno-receiver-assertions", "-Xno-call-assertions"])
    }
}

Атрибуты, общие для JVM и JS

Имя

Описание

Возможные значения

Значение по умолчанию

apiVersion

Ограничить использование объявлений теми, которые относятся к указанной версии встроенных библиотек

"1.3" (УСТАРЕВШЕЕ), "1.4" (УСТАРЕВШЕЕ), "1.5", "1.6", "1.7", "1.8", "1.9"

languageVersion

Обеспечить совместимость исходного кода с указанной версией Kotlin

"1.4" (УСТАРЕВШЕЕ), "1.5", "1.6", "1.7", "1.8", "1.9"

Также см. Типы параметров компилятора.

Атрибуты, специфичные для JS

Имя

Описание

Возможные значения

Значение по умолчанию

friendModulesDisabled

Отключить экспорт внутренних объявлений

false

main

Определяет, следует ли вызывать функцию main при выполнении

"call", "noCall". Также см. Типы параметров компилятора

"call"

metaInfo

Генерировать файлы .meta.js и .kjsm с метаданными. Используйте для создания библиотеки

true

moduleKind

Тип модуля JS, генерируемого компилятором

"umd", "commonjs", "amd", "plain", "es". Также см. Типы параметров компилятора

"umd"

outputFile

Целевой файл *.js для результата компиляции

"<buildDir>/js/packages/<project.name>/kotlin/<project.name>.js"

sourceMap

Генерировать source map

true

sourceMapEmbedSources

Встроить исходные файлы в source map

"never", "always", "inlining". Также см. Типы параметров компилятора

sourceMapPrefix

Добавить указанный префикс к путям в source map

target

Генерировать JS файлы для определенной версии ECMA

"v5"

"v5"

typedArrays

Преобразовывать примитивные массивы в JS типизированные массивы

true

Типы для параметров компилятора

Некоторые из compilerOptions используют новые типы вместо типа String:

Параметр

Тип

Пример

jvmTarget

JvmTarget

compilerOptions.jvmTarget.set(JvmTarget.JVM_11)

apiVersion и languageVersion

KotlinVersion

compilerOptions.languageVersion.set(KotlinVersion.KOTLIN_1_9)

main

JsMainFunctionExecutionMode

compilerOptions.main.set(JsMainFunctionExecutionMode.NO_CALL)

moduleKind

JsModuleKind

compilerOptions.moduleKind.set(JsModuleKind.MODULE_ES)

sourceMapEmbedSources

JsSourceMapEmbedMode

compilerOptions.sourceMapEmbedSources.set(JsSourceMapEmbedMode.SOURCE_MAP_SOURCE_CONTENT_INLINING)

Что дальше?

Узнайте больше о:

  • Инкрементная компиляция, поддержка кэшей, отчеты о сборке и демоне Kotlin.

  • Основы и особенности Gradle.

  • Поддержка вариантов плагинов Gradle.

Последнее изменение: 10 января 2023 г.
Настройка проекта Gradle Компиляция и кэши в плагине Kotlin Gradle

© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/gradle-compiler-options.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API