Spec-Zone.ru › Kotlin 2

Параметры компилятора Kotlin

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

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

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

  • В Gradle, когда вы вызываете gradle build в консоли или IDE.

  • В Maven, когда вы вызываете mvn compile или mvn test-compile в консоли или IDE.

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

Параметры компилятора

Компиляторы Kotlin имеют ряд параметров для настройки процесса компиляции. На этой странице перечислены параметры компилятора для разных целевых платформ и описан каждый из них.

Задать параметры компилятора и их значения (аргументы компилятора) можно несколькими способами:

  • В IntelliJ IDEA укажите аргументы компилятора в текстовом поле Дополнительные параметры командной строки в разделе Настройки/Параметры | Сборка, выполнение, развертывание | Компилятор | Компилятор Kotlin.

  • При использовании Gradle укажите аргументы компилятора в свойстве compilerOptions задачи компиляции Kotlin. Подробности см. в разделе Параметры компилятора Gradle.

  • При использовании Maven укажите аргументы компилятора в элементе <configuration> узла плагина Maven. Подробности см. в разделе Maven.

  • При запуске компилятора из командной строки добавьте аргументы компилятора непосредственно к вызову утилиты или запишите их в файл аргументов.

    Например:

    $ kotlinc hello.kt -include-runtime -d hello.jar
    

    В Windows, если вы передаете аргументы компилятора, содержащие символы-разделители (пробелы, =, ;, ,), заключайте такие аргументы в двойные кавычки (").

    $ kotlinc.bat hello.kt -include-runtime -d "My Folder\hello.jar"
    

Схема параметров компилятора

Общая схема для всех параметров компилятора опубликована в виде JAR-артефакта в org.jetbrains.kotlin:kotlin-compiler-arguments-description. Артефакт содержит как представление в коде, так и эквивалентное представление в JSON для описаний всех параметров компилятора (для пользователей, не использующих Kotlin). Кроме того, он содержит метаданные, например версию, в которой каждый параметр был добавлен или стабилизирован.

Общие параметры

Следующие параметры являются общими для всех компиляторов Kotlin.

-api-version version

Задайте версию API, чтобы контролировать, какие API Kotlin можно использовать в коде во время выполнения. Например, если вы используете компилятор Kotlin версии 2.4.0 с -api-version=2.1, ваш код останется совместимым со стандартной библиотекой Kotlin версии 2.1.0.

Нельзя задать значение -api-version выше значения -language-version.

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

Подробнее о влиянии версии API на совместимость см. в разделе Рекомендации по обратной совместимости для авторов библиотек.

-help (-h)

Показать справочную информацию и завершить работу. Отображаются только стандартные параметры. Чтобы показать дополнительные параметры, используйте -X.

-kotlin-home path

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

-language-version version

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

Например, чтобы воспользоваться новыми улучшениями производительности компиляции, не меняя поведение компилятора, можно использовать новую версию компилятора с более старой версией языка. При использовании более старой версии языка новые языковые возможности будут недоступны, но также не появятся новые ошибки и предупреждения об устаревших элементах, добавленные после этой версии. Такой подход особенно полезен авторам библиотек, которым необходимо сохранить совместимость со старыми версиями Kotlin. Подробнее см. в разделе Рекомендации по обратной совместимости для авторов библиотек.

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

При использовании более старой версии языка необходимо также использовать более старую версию API. Подробнее см. в разделе -api-version version .

Технически можно настроить более новую версию языка, чтобы опробовать будущие языковые возможности до их стабилизации. Однако лучше включать отдельные возможности, следуя специальным инструкциям для каждой из них.

-opt-in annotation

Разрешить использование API, для которого требуется явное согласие, с аннотацией-требованием, указанной полным именем.

-P plugin:pluginId:optionName=value

Передать параметр плагину компилятора Kotlin. Основные плагины и их параметры перечислены в разделе Основные плагины компилятора документации.

-progressive

Включить для компилятора прогрессивный режим.

В прогрессивном режиме устаревшие элементы и исправления ошибок для нестабильного кода вступают в силу сразу, а не проходят постепенный цикл миграции. Код, написанный в прогрессивном режиме, обратно совместим; однако код, написанный в непрогрессивном режиме, может вызвать ошибки компиляции в прогрессивном режиме.

-script

Выполнить файл скрипта Kotlin. При вызове с этим параметром компилятор выполняет первый файл скрипта Kotlin (*.kts) среди переданных аргументов.

-verbose

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

-version

Показать версию компилятора.

-X

Показать сведения о дополнительных параметрах и завершить работу. Сейчас эти параметры нестабильны: их имена и поведение могут измениться без уведомления.

Параметры контрактов Kotlin

Следующие параметры включают экспериментальные возможности контрактов Kotlin.

-Xallow-contracts-on-more-functions

Включает контракты в дополнительных объявлениях, в том числе в аксессорах свойств, определенных операторных функциях и проверках типов обобщенных типов.

-Xallow-condition-implies-returns-contracts

Разрешает использовать функцию returnsNotNull() в контрактах, чтобы предполагать ненулевое возвращаемое значение при заданных условиях.

-Xallow-holdsin-contract

Разрешает использовать ключевое слово holdsIn в контрактах, чтобы предполагать, что логическое условие true внутри лямбды.

-Xallow-returns-result-of

Разрешает использовать контракт returnsResultOf(), чтобы средство проверки неиспользуемых возвращаемых значений могло различать результаты, которые можно игнорировать, и значимые результаты функций высшего порядка.

-Xallow-reified-type-in-catch

Включает поддержку реифицированных параметров типа Throwable в предложениях catch функций inline.

-Xcollection-literals

Включает поддержку литералов коллекций с синтаксисом скобок [].

-Xcompiler-plugin-order={plugin.before>plugin.after}

Настроить порядок запуска плагинов компилятора. Компилятор сначала запускает plugin.before, а затем plugin.after:

Для трех и более плагинов можно задать несколько правил порядка. Например:

kotlinc -Xcompiler-plugin-order=plugin.first>plugin.middle
kotlinc -Xcompiler-plugin-order=plugin.middle>plugin.last

В результате плагины запускаются в следующем порядке:

  1. plugin.first

  2. plugin.middle

  3. plugin.last

Если плагин компилятора отсутствует, соответствующее правило игнорируется.

Для следующих плагинов можно настроить порядок по их идентификаторам:

Плагин компилятора

Идентификатор плагина

all-open, kotlin-spring

org.jetbrains.kotlin.allopen

AtomicFU

org.jetbrains.kotlinx.atomicfu

Compose

androidx.compose.compiler.plugins.kotlin

js-plain-objects

org.jetbrains.kotlinx.jspo

jvm-abi-gen

org.jetbrains.kotlin.jvm.abi

kapt

org.jetbrains.kotlin.kapt3

Lombok

org.jetbrains.kotlin.lombok

no-arg, kotlin-jpa

org.jetbrains.kotlin.noarg

Parcelize

org.jetbrains.kotlin.parcelize

Power-assert

org.jetbrains.kotlin.powerassert

SAM с получателем

org.jetbrains.kotlin.samWithReceiver

Сериализация

org.jetbrains.kotlinx.serialization

Этот порядок запуска определяет только порядок работы серверной части плагинов компилятора, но не интерфейсной.

-Xdata-flow-based-exhaustiveness

Включает проверки полноты выражений when на основе потока данных.

-Xexplicit-context-arguments

Включает явную передачу контекстных аргументов для контекстных параметров.

Это позволяет разрешать неоднозначность перегрузки, передавая контекстные аргументы в месте вызова.

-Xklib-ir-inliner

Настроить, включена ли внутримодульная подстановка для Kotlin/Native, Kotlin/JS и Kotlin/Wasm. По умолчанию она включена.

Параметр поддерживает следующие режимы:

  • disabled: отключает внутримодульную подстановку для Kotlin/Native, Kotlin/JS и Kotlin/Wasm.

  • full: включает межмодульную подстановку.

-Xintrinsic-const-evaluation

Включает улучшенную поддержку констант времени компиляции.

-Xname-based-destructuring

Настроить интерпретацию компилятором объявлений с деструктуризацией на основе имен свойств.

Параметр поддерживает следующие режимы:

  • only-syntax: включает явную форму деструктуризации по именам, не меняя поведение существующих объявлений с деструктуризацией.

  • name-mismatch: выводит предупреждения, если при позиционной деструктуризации классов данных используются имена переменных, не совпадающие с именами свойств.

  • complete: включает краткую форму деструктуризации по именам с круглыми скобками и сохраняет поддержку позиционной деструктуризации с квадратными скобками.

-Xphases-to-dump-before

Установите значение ExternalPackageParentPatcherLowering, чтобы создать файл дампа после этапа понижения IR при компиляции. Настройте выходной каталог для Kotlin/JVM с помощью параметра компилятора -Xdump-directory.

-Xrepl

Активирует REPL Kotlin.

kotlinc -Xrepl

-Xreturn-value-checker

Настроить способ, которым компилятор сообщает об игнорируемых результатах:

  • disable: отключает проверку неиспользуемых возвращаемых значений (по умолчанию).

  • check: включает проверку и выводит предупреждения об игнорируемых результатах помеченных функций.

  • full: включает проверку, считает все функции проекта помеченными и выводит предупреждения об игнорируемых результатах.

Управление предупреждениями

-nowarn

Подавить все предупреждения во время компиляции.

-Werror

Считать все предупреждения ошибками компиляции.

-Wextra

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

-Xrender-internal-diagnostic-names

Выводить внутренние имена диагностики вместе с предупреждениями. Это полезно для определения DIAGNOSTIC_NAME, настроенного для параметра -Xwarning-level.

-Xwarning-level

Настроить уровень серьезности отдельных предупреждений компилятора:

kotlinc -Xwarning-level=DIAGNOSTIC_NAME:(error|warning|disabled)
  • error: повышает уровень только указанного предупреждения до ошибки.

  • warning: выводит предупреждение для указанного диагностического сообщения; включено по умолчанию.

  • disabled: подавляет только указанное предупреждение во всем модуле.

Изменить вывод предупреждений в проекте можно, сочетая правила для всего модуля с отдельными правилами:

Команда

Описание

-nowarn -Xwarning-level=DIAGNOSTIC_NAME:warning

Подавить все предупреждения, кроме указанных.

-Werror -Xwarning-level=DIAGNOSTIC_NAME:warning

Повысить уровень всех предупреждений до ошибок, кроме указанных.

-Wextra -Xwarning-level=DIAGNOSTIC_NAME:disabled

Включить все дополнительные проверки, кроме указанных.

Если нужно исключить много предупреждений из общих правил, их можно перечислить в отдельном файле с помощью @argfile.

Чтобы определить DIAGNOSTIC_NAME, используйте -Xrender-internal-diagnostic-names.

@argfile

Прочитать параметры компилятора из указанного файла. Такой файл может содержать параметры компилятора со значениями и пути к исходным файлам. Параметры и пути следует разделять пробелами. Например:

-include-runtime -d hello.jar hello.kt

Чтобы передать значения, содержащие пробелы, заключите их в одинарные (') или двойные (") кавычки. Если значение содержит кавычки, экранируйте их обратной косой чертой (\).

-include-runtime -d 'My folder'

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

$ kotlinc @compiler.options @classes

Если файлы находятся не в текущем каталоге, используйте относительные пути.

$ kotlinc @options/compiler.options hello.kt

Параметры компилятора Kotlin/JVM

Компилятор Kotlin для JVM компилирует исходные файлы Kotlin в файлы классов Java. Инструменты командной строки для компиляции Kotlin в JVM — kotlinc и kotlinc-jvm. Их также можно использовать для выполнения файлов скриптов Kotlin.

Помимо общих параметров, компилятор Kotlin/JVM поддерживает перечисленные ниже параметры.

-classpath path (-cp path)

Искать файлы классов по указанным путям. Элементы пути к классам разделяются системными разделителями путей (; в Windows, : в macOS/Linux). Путь к классам может содержать пути к файлам и каталогам, ZIP- или JAR-файлам.

-d path

Поместить сгенерированные файлы классов в указанное расположение. Это может быть каталог, ZIP- или JAR-файл.

-include-runtime

Включить среду выполнения Kotlin в результирующий JAR-файл. Полученный архив можно запускать в любой среде с поддержкой Java.

-jdk-home path

Использовать пользовательский домашний каталог JDK для включения в путь к классам, если он отличается от значения по умолчанию JAVA_HOME.

-Xjdk-release=version

Указать целевую версию генерируемого байт-кода JVM. Ограничить API JDK в пути к классам указанной версией Java. Автоматически задает -jvm-target version. Возможные значения: 1.8, 9, 10, ..., 26.

Эффективность этого параметра не гарантируется для всех дистрибутивов JDK.

-jvm-default mode

Управлять компиляцией функций, объявленных в интерфейсах, в методы по умолчанию JVM.

Режим

Описание

enable

Генерирует реализации по умолчанию в интерфейсах и включает мостовые функции в подклассах и классах DefaultImpls. (По умолчанию)

no-compatibility

Генерирует только реализации по умолчанию в интерфейсах, пропуская мосты совместимости и классы DefaultImpls.

disable

Генерирует только мосты совместимости и классы DefaultImpls, пропуская методы по умолчанию.

-jvm-target version

Указать целевую версию генерируемого байт-кода JVM. Возможные значения: 1.8, 9, 10, ..., 26. Значение по умолчанию — 1.8.

-java-parameters

Сгенерировать метаданные для рефлексии Java 1.8 по параметрам методов.

-module-name name (JVM)

Задать пользовательское имя для генерируемого файла .kotlin_module.

-no-jdk

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

-no-reflect

Не включать библиотеку рефлексии Kotlin (kotlin-reflect.jar) в путь к классам автоматически.

-no-stdlib (JVM)

Не включать стандартную библиотеку Kotlin/JVM (kotlin-stdlib.jar) и библиотеку рефлексии Kotlin (kotlin-reflect.jar) в путь к классам автоматически.

-script-templates classnames[,]

Классы шаблонов определения скриптов. Используйте полные имена классов и разделяйте их запятыми (,).

-Xdump-directory

Настроить каталог файлов дампа для параметра компилятора -Xphases-to-dump-before`.

-Xjvm-expose-boxed

Сгенерировать упакованные версии всех встроенных классов-значений в модуле, а также упакованные варианты использующих их функций, чтобы сделать их доступными из Java. Подробнее см. раздел Встроенные классы-значения в руководстве по вызову Kotlin из Java.

-Xnullability-annotations

Настроить интерпретацию компилятором Kotlin аннотаций nullability из определенных пакетов Java.

Полный список поддерживаемых аннотаций и параметров конфигурации см. в разделе Аннотации nullability.

Параметры компилятора Kotlin/JS

Компилятор Kotlin для JS преобразует исходные файлы Kotlin в код JavaScript. Инструмент командной строки для компиляции Kotlin в JS — kotlinc-js.

Помимо общих параметров, компилятор Kotlin/JS поддерживает перечисленные ниже параметры.

-libraries path

Пути к библиотекам Kotlin с файлами .meta.js и .kjsm, разделённые системным разделителем путей.

-main {call|noCall}

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

-meta-info

Создаёт файлы .meta.js и .kjsm с метаданными. Используйте этот параметр при создании библиотеки JS.

-module-kind {umd|commonjs|amd|plain}

Тип модуля JS, создаваемого компилятором:

  • umd — модуль Universal Module Definition

  • commonjs — модуль CommonJS

  • amd — модуль Asynchronous Module Definition

  • plain — обычный модуль JS

Подробнее о типах модулей JS и различиях между ними см. в этой статье.

-no-stdlib (JS)

Не включать автоматически стандартную библиотеку Kotlin/JS в зависимости компиляции.

-output filepath

Задаёт файл назначения для результата компиляции. Значением должен быть путь к файлу .js, включающий его имя.

-output-postfix filepath

Добавляет содержимое указанного файла в конец выходного файла.

-output-prefix filepath

Добавляет содержимое указанного файла в начало выходного файла.

-source-map

Создаёт source map.

-source-map-base-dirs path

Использует указанные пути в качестве базовых каталогов. Базовые каталоги используются для вычисления относительных путей в source map.

-source-map-embed-sources {always|never|inlining}

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

-source-map-names-policy {simple-names|fully-qualified-names|no}

Добавляет в source map имена переменных и функций, объявленных в коде Kotlin.

Параметр

Описание

Пример результата

simple-names

Добавляются имена переменных и простые имена функций. (По умолчанию)

main

fully-qualified-names

Добавляются имена переменных и полные имена функций.

com.example.kjs.playground.main

no

Имена переменных и функций не добавляются.

Н/Д

-source-map-prefix

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

-target {es5|es2015}

Создаёт файлы JS для указанной версии ECMA.

-Xenable-implementing-interfaces-from-typescript

Разрешает реализовывать интерфейсы Kotlin, экспортированные с аннотацией @JsExport, из JavaScript/TypeScript.

-Xes-long-as-bigint

Включает поддержку типа JavaScript BigInt для представления значений Kotlin Long при компиляции в современный JavaScript (ES2020).

-Xsuspend-lambda-exporting

Разрешает экспортировать приостанавливающие лямбда-выражения, объявленные в декларациях @JsExport, в качестве функций JavaScript async.

Параметры компилятора Kotlin/Native

Компилятор Kotlin/Native преобразует исходные файлы Kotlin в нативные бинарные файлы для поддерживаемых платформ. Инструмент командной строки для компиляции Kotlin/Native — kotlinc-native.

Помимо общих параметров, компилятор Kotlin/Native поддерживает перечисленные ниже параметры.

-enable-assertions (-ea)

Включает проверки во время выполнения в сгенерированном коде.

-entry name (-e name)

Задаёт полное имя точки входа.

-g

Включает генерацию отладочной информации. Этот параметр снижает уровень оптимизации, поэтому его не следует сочетать с параметром -opt.

-generate-test-runner (-tr)

Создаёт приложение для запуска модульных тестов проекта.

-generate-no-exit-test-runner (-trn)

Создаёт приложение для запуска модульных тестов без явного завершения процесса.

-include-binary path (-ib path)

Упаковывает внешний бинарный файл в создаваемый файл klib.

-library path (-l path)

Связывает с библиотекой. О том, как использовать библиотеки в проектах Kotlin/Native, см. в разделе Библиотеки Kotlin/Native.

-library-version version (-lv version)

Задаёт версию библиотеки.

-linker-option

Передаёт аргумент компоновщику при сборке бинарного файла. Этот параметр можно использовать для связывания с нативной библиотекой.

-linker-options args

Передаёт несколько аргументов компоновщику при сборке бинарного файла. Аргументы разделяются пробелами.

-list-targets

Выводит список доступных аппаратных целей.

-manifest path

Задаёт файл дополнения манифеста.

-module-name name (Native)

Задаёт имя модуля компиляции. Этот параметр также можно использовать, чтобы задать префикс имён объявлений, экспортируемых в Objective-C: Как задать пользовательский префикс/имя Objective-C для фреймворка Kotlin?

-native-library path (-nl path)

Включает библиотеку нативного битового кода.

-no-default-libs

Отключает связывание пользовательского кода с предварительно собранными библиотеками платформы, распространяемыми вместе с компилятором.

-nomain

Предполагает, что точка входа main предоставляется внешними библиотеками.

-nopack

Не упаковывает библиотеку в файл klib.

-nostdlib

Не связывает со стандартной библиотекой.

-opt

Включает оптимизацию компиляции и создаёт бинарный файл с более высокой производительностью во время выполнения. Не рекомендуется сочетать этот параметр с параметром -g, который снижает уровень оптимизации.

-output name (-o name)

Задаёт имя выходного файла.

-produce output (-p output)

Задаёт тип выходного файла:

  • program

  • static

  • dynamic

  • framework

  • library

  • bitcode

-repo path (-r path)

Путь поиска библиотек. Подробнее см. в разделе Последовательность поиска библиотек.

-target target

Задаёт аппаратную цель. Чтобы просмотреть список доступных целей, используйте параметр -list-targets.

-Xccall-mode

Включает новый режим взаимодействия с библиотеками C или Objective-C, импортированными через cinterop.

-Xoverride-konan-properties=min.version.*

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

kotlinc -Xoverride-konan-properties=minVersion.ios=14.0
kotlinc -Xoverride-konan-properties=minVersion.macos=11.0
kotlinc -Xoverride-konan-properties=minVersion.tvos=14.0
kotlinc -Xoverride-konan-properties=minVersion.watchos=7.0
03 сентября 2026
Создание консольного приложения — руководствоСтратегия выполнения компилятора

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

Spec-Zone.ru

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