Spec-Zone.ru › Kotlin 1.7

Maven

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

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

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

<properties>
    <kotlin.version>1.7.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 или средства тестирования, вам также необходимо добавить соответствующие зависимости. Идентификаторы артефактов составляют 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 в файле pom.xml вашего Maven проекта, где 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 в файле pom.xml вашего Maven проекта, где 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.8", "9", "10", ..., "18"

"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 для инструкций по конфигурации. Dokka поддерживает проекты с использованием нескольких языков и может генерировать выходные данные в нескольких форматах, включая стандартный Javadoc.

OSGi

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

Последнее изменение: 14 июня 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