- Gradle
- Плагин и версии
- Поддержка JVM
- Поддержка JavaScript
- Поддержка Android
- Android Studio
- Настройка зависимостей
- Аннотации
- Пошаговая компиляция
- Поддержка Coroutines(сопрограммы)
- Названия модулей
- Поддержка кеша Gradle Build Cache (начиная с версии 1.2.20)
- Опции компилятора
- Атрибуты, общие для JVM, JS и JS DCE
- Атрибуты, общие для JVM и JS
- Атрибуты, специфичные для JVM
- Атрибуты, специфичные для JS
- Создание документации
- OSGi
- Примеры
- Get started with Gradle and Kotlin/JVM
- Create a project
- Explore the build script
- Run the application
- What’s next?
Gradle
Для сборки с помощью Gradle необходимо настроить kotlin-gradle плагин, применить его к своему проекту и добавить kotlin-stdlib зависимость. Эти действия могут быть сделаны автоматически с помощью IntelliJ IDEA во вкладке Tools | Kotlin | Configure Kotlin.
Плагин и версии
kotlin-gradle-plugin создает Kotlin ресурсы и модули.
Версия Kotlin обычно указывается в kotlin_version свойстве:
buildscript < ext.kotlin_version = '>' repositories < mavenCentral() >dependencies < classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" >>
Это не требуется когда версия Kotlin Gradle плагина 1.1.1 и выше с Gradle plugins DSL.
Поддержка JVM
Чтобы настроить JVM необходимо использовать плагин Kotlin:
Начиная с Kotlin 1.1.1 плагин может быть применен автоматически с использованием Gradle plugins DSL:
version должен быть в данном блоке(как на примере), и не может быть использован из других скриптов сборки.
Kotlin ресурсы могут сочетаться с Java ресурсами из одной папки или разных папок. По умолчанию используются разные папки:
project - src - main (root) - kotlin - java
Соответствующее свойство sourceSets должно быть обновлено, если не использовано значение по умолчанию:
Поддержка JavaScript
Для использования JavaScript должен применяться другой плагин:
Данный плагин работает только для Kotlin файлов, таким образом рекомендуется хранить Kotlin и Java файлы раздельно (Это в случае если данный проект содержит Java файлы). Как и с поддержкой JVM, если не используются значения по умолчанию, необходимо определить папки ресурсов в sourceSets:
В дополнение к выходному файлу JavaScript плагин по умолчанию создает дополнительный JS-файл с двоичными дескрипторами. Эти файлы требуются в случае создании библиотеки, чтобы Kotlin модули могли наследоваться от нее, и должны распространяться вместе с библиотекой.
Процесс контролируется kotlinOptions.metaInfo свойством:
Поддержка Android
Android’s Gradle модель отличается от обычной Gradle модели, поэтому если необходимо собрать Android проект использующий Kotlin, необходимо применить kotlin-android плагин вместо kotlin:
buildscript < ext.kotlin_version = '>' . dependencies < classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" >> apply plugin: 'com.android.application' apply plugin: 'kotlin-android'
Android Studio
При использовании Android Studio, необходимо добавить следующее под блоком android:
Это позволит Android Studio находить kotlin директорию в папке с ресурсами поэтому когда проект будет загружен в IDE, он будет правильно распознан. Другой способ — это добавить Kotlin классы в Java директорию, расположенную по пути src/main/java .
Настройка зависимостей
В дополнение к зависимостям kotlin-gradle-plugin , показанным выше, вам нужно добавить зависимость от стандартной библиотеки Kotlin:
repositories < mavenCentral() >dependencies
Для поддержки JavaScript используйте compile «org.jetbrains.kotlin:kotlin-stdlib-js» .
Если вы собираетесь включить поддержку JDK 7 или JDK 8, вы можете использовать расширенную версию Kotlin standard library, которая содержит расширенный API, добавленный в новой JDK версии. Вместо kotlin-stdlib , используйте одну из следующих зависимостей:
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7" compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
В Kotlin 1.1.x, используйте kotlin-stdlib-jre7 вместо kotlin-stdlib-jre8 .
Если проект содержит Kotlin reflection или средства тестирования, вам также необходимо добавить соответствующие зависимости:
compile "org.jetbrains.kotlin:kotlin-reflect" testCompile "org.jetbrains.kotlin:kotlin-test" testCompile "org.jetbrains.kotlin:kotlin-test-junit"
Начиная с Kotlin 1.1.2 зависимости из группы org.jetbrains.kotlin по умолчанию разрешены. Вы можете указать версию вручную, используя полную зависимость, например compile «org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version» .
Аннотации
Пошаговая компиляция
Kotlin поддерживает пошаговую компиляцию в Gradle. Пошаговая компиляция отслеживает изменения исходных файлов между сборками, поэтому будут скомпилированы только файлы, затронутые этими изменениями.
Начиная с Kotlin 1.1.1 пошаговая компиляция доступна по умолчанию.
Существует несколько способов переопределить настройку по умолчанию:
- Добавить kotlin.incremental=true или kotlin.incremental=false либо в gradle.properties , либо в local.properties файл;
- Добавить -Pkotlin.incremental=true или -Pkotlin.incremental=false как параметр командной строки. Обратите внимание, что в этом случае параметр должен быть добавлен к каждой последующей сборке, а любая сборка с отключенной пошаговой компиляцией делает недействительными пошаговые кеши.
Когда пошаговая компиляция включена, в журнале сборки должно появиться следующее сообщение:
Using kotlin incremental compilation
Обратите внимание, что первая сборка не будет пошаговой.
Поддержка Coroutines(сопрограммы)
Coroutines добавлены как экспериментальная функция в Kotlin 1.2, поэтому компилятор Kotlin сообщает об использовании сопрограмм в вашем проекте. Чтобы отключить предупреждение, добавьте следующий блок в свой файл build.gradle :
Названия модулей
Модули Kotlin, создаваемые сборкой, называются соответственно свойству «archivesBaseName» в проекте. Если проект имеет широкое имя, например lib или jvm , что является общим для подпроектов, выходные файлы Kotlin, относящиеся к модулю ( * .kotlin_module ), могут столкнуться с модулями из сторонних модулей с тем же именем, это вызывает проблемы, когда проект упаковывается в один архив (например, APK).
Чтобы этого избежать, рассмотрите возможность установки уникального archivesBaseName вручную:
archivesBaseName = 'myExampleProject_lib'
Поддержка кеша Gradle Build Cache (начиная с версии 1.2.20)
Kotlin плагин поддерживает Gradle Build Cache (Требуется версия 4.3 и выше; кеширование отключено в более низких версиях).
Задачи обработки аннотаций Kapt не кэшируются по умолчанию, поскольку обработчики аннотаций запускают произвольный код, который необязательно преобразовывает входящие задачи в выходящие и может обращаться к файлам, не отслеживаемых Gradle, и изменять их. Чтобы включить кэширование для kapt в любом случае, добавьте следующие строки в сценарий сборки:
Чтобы отключить кеширование для всех задач Kotlin, установите для параметра системного свойства kotlin.caching.enabled значение false (запустите сборку с аргументом -Dkotlin.caching.enabled=false ).
Опции компилятора
Kotlin` pattern. The names of the tasks in Android Projects contain the [build variant](https://developer.android.com/studio/build/build-variants.html) names and follow the pattern `compile Kotlin`, for example, `compileDebugKotlin`, `compileReleaseUnitTestKotlin`. When targeting JavaScript, the tasks are called `compileKotlin2Js` and `compileTestKotlin2Js` respectively, and `compile Kotlin2Js` for custom source sets. To configure a single task, use its name. Examples: «` groovy compileKotlin < kotlinOptions.suppressWarnings = true >compileKotlin < kotlinOptions < suppressWarnings = true >> «` It is also possible to configure all Kotlin compilation tasks in the project: «` groovy tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all < kotlinOptions < // . >> «` A complete list of options for the Gradle tasks follows: —>
Чтобы указать дополнительные параметры компиляции, используйте свойство kotlinOptions .
При поддержке JVM опции называются compileKotlin для релизного кода и compileTestKotlin для тестового кода. Задачи для настраиваемых исходных ресурсов вызываются по шаблону compile Kotlin .
Имена задач в проектах Android содержат build variant и следуют шаблону compile Kotlin , например, compileDebugKotlin , compileReleaseUnitTestKotlin .
При поддержке JavaScript задачи называются compileKotlin2Js и compileTestKotlin2Js соответственно, и compile Kotlin2Js для настраиваемых ресурсов.
Чтобы настроить задачу, используйте ее имя. Примеры:
compileKotlin < kotlinOptions.suppressWarnings = true >compileKotlin < kotlinOptions < suppressWarnings = true >>
Также возможно сконфигурировать все задачи компиляции Kotlin:
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all < kotlinOptions < // . >>
Ниже приведен полный список параметров для задач Gradle:
Атрибуты, общие для JVM, JS и JS DCE
Имя | Описание | Возможные значения | Значение по умолчанию |
---|---|---|---|
allWarningsAsErrors | Сообщить об ошибке если есть какие-либо предупреждения (warnings) | false | |
suppressWarnings | Не создавать предупреждения (warnings) | false | |
verbose | Включить подробный вывод журнала | false | |
freeCompilerArgs | Список дополнительных аргументов компилятора | [] |
Атрибуты, общие для JVM и JS
Имя | Описание | Возможные значения | Значение по умолчанию |
---|---|---|---|
apiVersion | Разрешить использование объявлений (declarations) только из указанных версий зависимых библиотек | «1.0», «1.1», «1.2», «1.3 (EXPERIMENTAL)» | |
languageVersion | Обеспечить совместимость источника с указанной языковой версией | «1.0», «1.1», «1.2», «1.3 (EXPERIMENTAL)» |
Атрибуты, специфичные для JVM
Имя | Описание | Возможные значения | Значение по умолчанию |
---|---|---|---|
javaParameters | Генерировать метаданные для reflection Java 1.8 по параметрам метода | false | |
jdkHome | Путь к домашнему каталогу JDK для включения в путь классов, если отличается от стандартного JAVA_HOME | ||
jvmTarget | Целевая версия сгенерированного байт-кода JVM (1.6 или 1.8), по умолчанию — 1.6 | «1.6», «1.8» | «1.6» |
noJdk | Не включать Java в classpath | false | |
noReflect | Не включайте реализацию Kotlin reflection в classpath | true | |
noStdlib | Не включать Kotlin runtime в classpath | true |
Атрибуты, специфичные для JS
Имя | Описание | Возможные значения | Значение по умолчанию |
---|---|---|---|
friendModulesDisabled | Отключить экспорт внутренних описаний (declaration) | false | |
main | Должна ли быть вызвана основная функция | «call», «noCall» | «call» |
metaInfo | Создание файлов .meta.js и .kjsm с метаданными. Использование их для создания библиотеки | true | |
moduleKind | Тип модуля, сгенерированного компилятором | «plain», «amd», «commonjs», «umd» | «plain» |
noStdlib | Не использовать Kotlin stdlib | true | |
outputFile | Выходной путь файла | ||
sourceMap | Создание источника (source map) | false | |
sourceMapEmbedSources | Вставлять исходные файлы (source map) в источник | «never», «always», «inlining» | |
sourceMapPrefix | Префикс для путей в источнике (source map) | ||
target | Создание JS-файлов для конкретной версии ECMA | «v5» | «v5» |
typedArrays | Перевести примитивные массивы на массивы в JS | true |
Создание документации
Чтобы создать документацию для проектов Kotlin, используйте Dokka; обратитесь к Dokka README для инструкций по настройке. Dokka поддерживает проекты на смешанном языке и может генерировать выходные данные в нескольких форматов, включая стандартный JavaDoc.
OSGi
Для поддержки OSGi см. Страницу Kotlin OSGi.
Примеры
В следующих примерах показаны различные возможности настройки плагина Gradle:
Get started with Gradle and Kotlin/JVM
This tutorial demonstrates how to use IntelliJ IDEA and Gradle for creating a console application.
To get started, first download and install the latest version of IntelliJ IDEA.
Create a project
- In IntelliJ IDEA, select File | New | Project.
- In the panel on the left, select New Project.
- Name the new project and change its location, if necessary. Select the Create Git repository checkbox to place the new project under version control. You will be able to do it later at any time.
- From the Language list, select Kotlin.
- Select the Gradle build system.
- From the JDK list, select the JDK that you want to use in your project.
- If the JDK is installed on your computer, but not defined in the IDE, select Add JDK and specify the path to the JDK home directory.
- If you don’t have the necessary JDK on your computer, select Download JDK.
- From the Gradle DSL list, select Kotlin.
- Select the Add sample code checkbox to create a file with a sample «Hello World!» application.
- Click Create.
You have successfully created a project with Gradle.
Explore the build script
Open the build.gradle.kts file. This is the Gradle Kotlin build script, which contains Kotlin-related artifacts and other parts required for the application:
- 1️⃣ Application plugin to add support for building CLI application in Java.
- 2️⃣ Lean more about sources of dependencies.
- 3️⃣ The Maven Central Repository. It can also be Google’s Maven repository or your company’s private repository.
- 4️⃣ Learn more about declaring dependencies.
- 5️⃣ Learn more about tasks.
- 6️⃣ JUnitPlatform for tests.
- 7️⃣ Learn more about setting up a Java toolchain.
As you can see, there are a few Kotlin-specific artifacts added to the Gradle build file:
- In the plugins block, there is the kotlin(«jvm») artifact – the plugin defines the version of Kotlin to be used in the project.
- In the dependencies section, there is testImplementation(kotlin(«test»)) . Learn more about setting dependencies on test libraries.
- After the dependencies section, there is the KotlinCompile task configuration block. This is where you can add extra arguments to the compiler to enable or disable various language features.
Run the application
Open the Main.kt file in src/main/kotlin .
The src directory contains Kotlin source files and resources. The Main.kt file contains sample code that will print Hello World! .
The easiest way to run the application is to click the green Run icon in the gutter and select Run ‘MainKt’.
You can see the result in the Run tool window.
Congratulations! You have just run your first Kotlin application.