Complemento y versiones

los complemento de kotlin-maven compila fuentes y módulos de Kotlin. Actualmente, solo se admite Maven v3.

Defina la versión de Kotlin que desea utilizar mediante un kotlin.version propiedad:

<properties><kotlin.version>1.4.10kotlin.version>properties>

Dependencias

Kotlin tiene una extensa biblioteca estándar que se puede utilizar en sus aplicaciones. Configure la siguiente dependencia en el archivo pom:

<dependencies><dependency><groupId>org.jetbrains.kotlingroupId><artifactId>kotlin-stdlibartifactId><version>$kotlin.versionversion>dependency>dependencies>

Si tiene como objetivo JDK 7 o JDK 8, puede usar versiones extendidas de la biblioteca estándar de Kotlin que contienen funciones de extensión adicionales para las API agregadas en las nuevas versiones de JDK. En lugar de kotlin-stdlib, usar kotlin-stdlib-jdk7 o kotlin-stdlib-jdk8, dependiendo de su versión de JDK (para Kotlin 1.1.x use kotlin-stdlib-jre7 y kotlin-stdlib-jre8 como el jdk las contrapartes se introdujeron en 1.2.0).

Si su proyecto utiliza las instalaciones de prueba o reflexión de Kotlin, también debe agregar las dependencias correspondientes. Los ID de artefactos son kotlin-reflect para la biblioteca de reflexión, y kotlin-test y kotlin-test-junit para las bibliotecas de prueba.

Compilar solo el código fuente de Kotlin

Para compilar el código fuente, especifique los directorios fuente en el etiqueta:

<build><sourceDirectory>$project.basedir/src/main/kotlinsourceDirectory><testSourceDirectory>$project.basedir/src/test/kotlintestSourceDirectory>build>

Es necesario hacer referencia al complemento Kotlin Maven para compilar las fuentes:

<build><plugins><plugin><groupId>org.jetbrains.kotlingroupId><artifactId>kotlin-maven-pluginartifactId><version>$kotlin.versionversion><executions><execution><id>compileid><goals><goal>compilegoal>goals>execution><execution><id>test-compileid><goals><goal>test-compilegoal>goals>execution>executions>plugin>plugins>build>

Compilar fuentes de Kotlin y Java

Compilar mixed Aplicaciones de código El compilador de Kotlin debe invocarse antes que el compilador de Java. En términos de expertos, eso significa que kotlin-maven-plugin debería correr antes maven-compiler-plugin utilizando el siguiente método. Asegúrese de que el kotlin el complemento viene antes del maven-compiler-plugin en tus pom.xml expediente:

<build><plugins><plugin><groupId>org.jetbrains.kotlingroupId><artifactId>kotlin-maven-pluginartifactId><version>$kotlin.versionversion><executions><execution><id>compileid><goals><goal>compilegoal>goals><configuration><sourceDirs><sourceDir>$project.basedir/src/main/kotlinsourceDir><sourceDir>$project.basedir/src/main/javasourceDir>sourceDirs>configuration>execution><execution><id>test-compileid><goals><goal>test-compilegoal>goals><configuration><sourceDirs><sourceDir>$project.basedir/src/test/kotlinsourceDir><sourceDir>$project.basedir/src/test/javasourceDir>sourceDirs>configuration>execution>executions>plugin><plugin><groupId>org.apache.maven.pluginsgroupId><artifactId>maven-compiler-pluginartifactId><version>3.5.1version><executions><execution><id>default-compileid><phase>nonephase>execution><execution><id>default-testCompileid><phase>nonephase>execution><execution><id>java-compileid><phase>compilephase><goals><goal>compilegoal>goals>execution><execution><id>java-test-compileid><phase>test-compilephase><goals><goal>testCompilegoal>goals><configuration><skip>$maven.test.skipskip>configuration>execution>executions>plugin>plugins>build>

Compilación incremental

Para que sus compilaciones sean más rápidas, puede habilitar la compilación incremental para Maven (compatible desde Kotlin 1.1.2). Para hacer eso, defina el kotlin.compiler.incremental propiedad:

<properties><kotlin.compiler.incremental>truekotlin.compiler.incremental>properties>

Alternativamente, ejecute su compilación con el -Dkotlin.compiler.incremental=true opción.

Procesamiento de anotaciones

Consulte la descripción de la herramienta de procesamiento de anotaciones de Kotlin (kapt).

Soporte de corrutinas

El soporte de corrutinas es una característica experimental en Kotlin 1.2, por lo que el compilador de Kotlin informa una advertencia cuando usa corrutinas en su proyecto. Para desactivar la advertencia, agregue el siguiente bloque a su pom.xml expediente:

<configuration><experimentalCoroutines>enableexperimentalCoroutines>configuration>

Archivo jar

Para crear un pequeño archivo Jar que contenga solo el código de su módulo, incluya lo siguiente en build->plugins en su archivo pom.xml de Maven, donde main.class se define como una propiedad y apunta a la clase principal de Kotlin o Java:

<plugin><groupId>org.apache.maven.pluginsgroupId><artifactId>maven-jar-pluginartifactId><version>2.6version><configuration><archive><manifest><addClasspath>trueaddClasspath><mainClass>$main.classmainClass>manifest>archive>configuration>plugin>

Archivo Jar autónomo

Para crear un archivo Jar autónomo que contenga el código de su módulo junto con las dependencias, incluya lo siguiente en build->plugins en su archivo pom.xml de Maven, donde main.class se define como una propiedad y apunta a la clase principal de Kotlin o Java:

<plugin><groupId>org.apache.maven.pluginsgroupId><artifactId>maven-assembly-pluginartifactId><version>2.6version><executions><execution><id>make-assemblyid><phase>packagephase><goals><goal>singlegoal>goals><configuration><archive><manifest><mainClass>$main.classmainClass>manifest>archive><descriptorRefs><descriptorRef>jar-with-dependenciesdescriptorRef>descriptorRefs>configuration>execution>executions>plugin>

Este archivo jar autónomo se puede pasar directamente a un JRE para ejecutar su aplicación:

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

Especificar las opciones del compilador

Se pueden especificar opciones y argumentos adicionales para el compilador como etiquetas en el elemento del nodo del complemento Maven:

<plugin><groupId>org.jetbrains.kotlingroupId><artifactId>kotlin-maven-pluginartifactId><version>$kotlin.versionversion><executions>...executions><configuration><nowarn>truenowarn><args><arg>-Xjsr305=strictarg>
            ...
        args>configuration>plugin>

Muchas de las opciones también se pueden configurar a través de propiedades:

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

Se admiten los siguientes atributos:

Atributos comunes para JVM y JS

Nombre Nombre de la propiedad Descripción Valores posibles Valor por defecto
nowarn No generar advertencias true, false false
languageVersion kotlin.compiler.languageVersion Proporcionar compatibilidad de fuente con la versión especificada de Kotlin “1.2 (ANULADO)”, “1.3”, “1.4”, “1.5 (EXPERIMENTAL)”
apiVersion kotlin.compiler.apiVersion Permitir el uso de declaraciones solo de la versión especificada de las bibliotecas empaquetadas “1.2 (ANULADO)”, “1.3”, “1.4”, “1.5 (EXPERIMENTAL)”
sourceDirs Los directorios que contienen los archivos fuente para compilar Las raíces de la fuente del proyecto
compilerPlugins Complementos de compilador habilitados []
pluginOptions Opciones para complementos del compilador []
args Argumentos adicionales del compilador []

Atributos específicos para JVM

Nombre Nombre de la propiedad Descripción Valores posibles Valor por defecto
jvmTarget kotlin.compiler.jvmTarget Versión de destino del código de bytes JVM generado “1.6”, “1.8”, “9”, “10”, “11”, “12”, “13”, “14” “1.6”
jdkHome kotlin.compiler.jdkHome Incluya un JDK personalizado desde la ubicación especificada en la ruta de clase en lugar del JAVA_HOME predeterminado

Atributos específicos para JS

Nombre Nombre de la propiedad Descripción Valores posibles Valor por defecto
outputFile Archivo de destino * .js para el resultado de la compilación
metaInfo Genere archivos .meta.js y .kjsm con metadatos. Úselo para crear una biblioteca true, false true
sourceMap Generar mapa fuente true, false false
sourceMapEmbedSources Incrustar archivos de origen en el mapa de origen “nunca”, “siempre”, “en línea” “en línea”
sourceMapPrefix Agrega el especificado prefix a las rutas en el mapa de origen
moduleKind El tipo de módulo JS generado por el compilador. “umd”, “commonjs”, “amd”, “simple” “umd”

Generando documentación

El complemento estándar de generación de JavaDoc (maven-javadoc-plugin) no es compatible con el código Kotlin. Para generar documentación para proyectos de Kotlin, use Dokka; por favor refiérase a README de Dokka para obtener instrucciones de configuración. Soportes Dokka mixedproyectos de lenguaje y puede generar resultados en múltiples formatos, incluido JavaDoc estándar.

OSGi

Para obtener soporte para OSGi, consulte la página de Kotlin OSGi.

Ejemplos de

Un ejemplo de proyecto Maven puede ser descargado directamente del repositorio de GitHub