Параметры компилятора в плагине 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
Имя |
Описание |
Возможные значения |
Значение по умолчанию |
|---|---|---|---|
|
Генерировать метаданные для Java 1.8 reflection по параметрам метода |
false |
|
|
Целевая версия генерируемого байт-кода JVM |
"1.8", "9", "10", ..., "19". Также см. Типы параметров компилятора |
"1.8" |
|
Не включать автоматически среду выполнения Java в classpath |
false |
Атрибуты, общие для JVM, JS и JS DCE
Имя |
Описание |
Возможные значения |
Значение по умолчанию |
|---|---|---|---|
|
Сообщать об ошибке, если есть предупреждения |
false |
|
|
Не генерировать предупреждения |
false |
|
|
Включить подробный вывод журнала. Работает только при включенном уровне отладки журнала Gradle |
false |
|
|
Список дополнительных аргументов компилятора. Вы можете использовать экспериментальные аргументы |
[] |
Пример использования дополнительных аргументов через 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
Имя |
Описание |
Возможные значения |
Значение по умолчанию |
|---|---|---|---|
|
Ограничить использование объявлений теми, которые относятся к указанной версии встроенных библиотек |
"1.3" (УСТАРЕВШЕЕ), "1.4" (УСТАРЕВШЕЕ), "1.5", "1.6", "1.7", "1.8", "1.9" |
|
|
Обеспечить совместимость исходного кода с указанной версией Kotlin |
"1.4" (УСТАРЕВШЕЕ), "1.5", "1.6", "1.7", "1.8", "1.9" |
Также см. Типы параметров компилятора.
Атрибуты, специфичные для JS
Имя |
Описание |
Возможные значения |
Значение по умолчанию |
|---|---|---|---|
|
Отключить экспорт внутренних объявлений |
false |
|
|
Определяет, следует ли вызывать функцию |
"call", "noCall". Также см. Типы параметров компилятора |
"call" |
|
Генерировать файлы .meta.js и .kjsm с метаданными. Используйте для создания библиотеки |
true |
|
|
Тип модуля JS, генерируемого компилятором |
"umd", "commonjs", "amd", "plain", "es". Также см. Типы параметров компилятора |
"umd" |
|
Целевой файл *.js для результата компиляции |
"<buildDir>/js/packages/<project.name>/kotlin/<project.name>.js" |
|
|
Генерировать source map |
true |
|
|
Встроить исходные файлы в source map |
"never", "always", "inlining". Также см. Типы параметров компилятора |
|
|
Добавить указанный префикс к путям в source map |
||
|
Генерировать JS файлы для определенной версии ECMA |
"v5" |
"v5" |
|
Преобразовывать примитивные массивы в JS типизированные массивы |
true |
Типы для параметров компилятора
Некоторые из compilerOptions используют новые типы вместо типа String:
Параметр |
Тип |
Пример |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Что дальше?
Узнайте больше о:
© 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