Spec-Zone.ru › Kotlin 1.6

Maven

Плагин и версии

Плагин kotlin-maven-plugin компилирует Kotlin-источники и модули. В настоящее время поддерживается только Maven v3.

Определите используемую версию Kotlin с помощью свойства kotlin.version:

<properties>
    <kotlin.version>1.6.20</kotlin.version>
</properties>

Зависимости

Kotlin имеет обширную стандартную библиотеку, которую можно использовать в ваших приложениях. Для использования стандартной библиотеки в проекте добавьте следующую зависимость в файл pom:

<dependencies>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-stdlib</artifactId>
        <version>${kotlin.version}</version>
    </dependency>
</dependencies>

Если вы используете JDK 7 или JDK 8, вы можете использовать расширенные версии стандартной библиотеки Kotlin. Они содержат дополнительные расширяющие функции для API, добавленных в новые версии JDK. Вместо kotlin-stdlib, используйте kotlin-stdlib-jdk7 или kotlin-stdlib-jdk8, в зависимости от версии вашего JDK.

Для версий Kotlin, более старых чем 1.2, используйте kotlin-stdlib-jre7 и kotlin-stdlib-jre8.

Если ваш проект использует Kotlin reflection или средства тестирования, вам также необходимо добавить соответствующие зависимости. Идентификаторы артефактов — kotlin-reflect для библиотеки рефлексии и kotlin-test и kotlin-test-junit для библиотек тестирования.

Компиляция только Kotlin-источников

Для компиляции исходного кода укажите каталоги источников в теге <build>.

<build>
    <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
    <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
</build>

Для компиляции источников необходима ссылка на плагин Kotlin Maven Plugin:

<build>
    <plugins>
        <plugin>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-plugin</artifactId>
            <version>${kotlin.version}</version>

            <executions>
                <execution>
                    <id>compile</id>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>

                <execution>
                    <id>test-compile</id>
                    <goals>
                        <goal>test-compile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Компиляция Kotlin и Java источников

Для компиляции проектов, включающих Kotlin и Java исходный код, необходимо вызвать компилятор Kotlin перед Java компилятором. В терминах Maven это означает, что kotlin-maven-plugin должно быть выполнено до maven-compiler-plugin с помощью следующего метода, убедитесь, что плагин kotlin стоит перед maven-compiler-plugin в вашем файле pom.xml.

<build>
    <plugins>
        <plugin>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-plugin</artifactId>
            <version>${kotlin.version}</version>
            <executions>
                <execution>
                    <id>compile</id>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                    <configuration>
                        <sourceDirs>
                            <sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
                            <sourceDir>${project.basedir}/src/main/java</sourceDir>
                        </sourceDirs>
                    </configuration>
                </execution>
                <execution>
                    <id>test-compile</id>
                    <goals> <goal>test-compile</goal> </goals>
                    <configuration>
                        <sourceDirs>
                            <sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
                            <sourceDir>${project.basedir}/src/test/java</sourceDir>
                        </sourceDirs>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <executions>
                <!-- Replacing default-compile as it is treated specially by maven -->
                <execution>
                    <id>default-compile</id>
                    <phase>none</phase>
                </execution>
                <!-- Replacing default-testCompile as it is treated specially by maven -->
                <execution>
                    <id>default-testCompile</id>
                    <phase>none</phase>
                </execution>
                <execution>
                    <id>java-compile</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
                <execution>
                    <id>java-test-compile</id>
                    <phase>test-compile</phase>
                    <goals>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Инкрементальная компиляция

Для ускорения сборки вы можете включить инкрементальную компиляцию для Maven, определив свойство kotlin.compiler.incremental:

<properties>
    <kotlin.compiler.incremental>true</kotlin.compiler.incremental>
</properties>

Или запустите сборку с опцией -Dkotlin.compiler.incremental=true.

Обработка аннотаций

См. описание инструмента обработки аннотаций Kotlin (kapt).

Файл jar

Для создания небольшого файла jar, содержащего только код из вашего модуля, включите следующее в build->plugins в файле Maven pom.xml, где main.class определено как свойство и указывает на главный Kotlin или Java класс:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>${main.class}</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

Самодостаточный файл jar

Для создания самодостаточного файла jar, содержащего код вашего модуля вместе с зависимостями, включите следующее в build->plugins в файле Maven pom.xml, где main.class определено как свойство и указывает на главный Kotlin или Java класс:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals> <goal>single</goal> </goals>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>${main.class}</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </execution>
    </executions>
</plugin>

Этот самодостаточный файл jar можно напрямую передать JRE для запуска вашего приложения:

java -jar target/mymodule-0.0.1-SNAPSHOT-jar-with-dependencies.jar

Указание опций компилятора

Дополнительные опции и аргументы для компилятора можно указать как теги в элементе <configuration> узла плагина Maven:

<plugin>
    <groupId>org.jetbrains.kotlin</groupId>
    <artifactId>kotlin-maven-plugin</artifactId>
    <version>${kotlin.version}</version>
    <executions>...</executions>
    <configuration>
        <nowarn>true</nowarn>  <!-- Disable warnings -->
        <args>
            <arg>-Xjsr305=strict</arg> <!-- Enable strict mode for JSR-305 annotations -->
            ...
        </args>
    </configuration>
</plugin>

Многие опции также можно настроить через свойства:

<project ...>
    <properties>
        <kotlin.compiler.languageVersion>1.0</kotlin.compiler.languageVersion>
    </properties>
</project>

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

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

Имя

Имя свойства

Описание

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

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

nowarn

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

true, false

false

languageVersion

kotlin.compiler.languageVersion

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

"1.4" (УСТАРЕЛО), "1.5", "1.6", "1.7" (ЭКСПЕРИМЕНТАЛЬНО)

apiVersion

kotlin.compiler.apiVersion

Разрешить использование объявлений только из указанной версии связанных библиотек

"1.3" (УСТАРЕЛО), "1.4" (УСТАРЕЛО), "1.5", "1.6", "1.7" (ЭКСПЕРИМЕНТАЛЬНО)

sourceDirs

Каталоги, содержащие исходные файлы для компиляции

Корни проекта

compilerPlugins

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

[]

pluginOptions

Опции для плагинов компилятора

[]

args

Дополнительные аргументы компилятора

[]

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

Имя

Имя свойства

Описание

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

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

jvmTarget

kotlin.compiler.jvmTarget

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

"1.6" (УСТАРЕЛО), "1.8", "9", "10", "11", "12", "13", "14", "15", "16", "17"

"1.8"

jdkHome

kotlin.compiler.jdkHome

Включить пользовательский JDK из указанного местоположения в пути класса вместо стандартного JAVA_HOME

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

Имя

Имя свойства

Описание

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

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

outputFile

Файл назначения *.js для результата компиляции

metaInfo

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

true, false

true

sourceMap

Сгенерировать карту исходного кода

true, false

false

sourceMapEmbedSources

Встраивать исходные файлы в карту исходного кода

"never", "always", "inlining"

"inlining"

sourceMapPrefix

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

moduleKind

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

"umd", "commonjs", "amd", "plain"

"umd"

Генерация документации

Стандартный плагин генерации JavaDoc (maven-javadoc-plugin) не поддерживает Kotlin код. Для генерации документации для Kotlin проектов используйте Dokka; обратитесь к Dokka README для инструкций по настройке. Dokka поддерживает проекты смешанного языка и может генерировать вывод в нескольких форматах, включая стандартный JavaDoc.

OSGi

Для поддержки OSGi, см. страницу Kotlin OSGi.

Последнее изменение: 07 апреля 2022
Gradle Ant

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

Spec-Zone.ru

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