Spec-Zone.ru › Kotlin 1.8

Maven

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

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

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

<properties>
    <kotlin.version>1.8.0</kotlin.version>
</properties>

Зависимости

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

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

Если вы используете JDK 7 или 8 с версиями Kotlin, более старыми чем:

  • 1.8, используйте kotlin-stdlib-jdk7 или kotlin-stdlib-jdk8, соответственно.

  • 1.2, используйте kotlin-stdlib-jre7 или kotlin-stdlib-jre8, соответственно.

Если ваш проект использует Kotlin reflection или средства тестирования, вам также нужно добавить соответствующие зависимости. Идентификаторы артефактов — kotlin-reflect для библиотеки reflection, и 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", "1.8", "1.9"

apiVersion

kotlin.compiler.apiVersion

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

"1.3" (УСТАРЕЛО), "1.4" (УСТАРЕЛО), "1.5", "1.6", "1.7", "1.8", "1.9"

sourceDirs

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

Корни исходников проекта

compilerPlugins

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

[]

pluginOptions

Параметры для плагинов компилятора

[]

args

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

[]

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

Имя

Имя свойства

Описание

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

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

jvmTarget

kotlin.compiler.jvmTarget

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

"1.8", "9", "10", ..., "19"

"1.8"

jdkHome

kotlin.compiler.jdkHome

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

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

Использование BOM

Для использования Kotlin Биллы материалов (BOM) добавьте зависимость от kotlin-bom:

<dependencyManagement>
  <dependencies>  
    <dependency>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-bom</artifactId>
      <version>1.8.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

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

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

OSGi

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

END_OF_DOCUMENT_MARKER ```
Последнее изменение: 10 января 2023
Поддержка вариантов плагинов Gradle Ant

© 2010–2023 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