使用 Maven

    通过 kotlin.version 属性定义要使用的 Kotlin 版本:

    依赖

    Kotlin 有一个广泛的标准库可用于应用程序。在 pom 文件中配置以下依赖关系:

    1. <dependency>
    2. <groupId>org.jetbrains.kotlin</groupId>
    3. <artifactId>kotlin-stdlib</artifactId>
    4. <version>${kotlin.version}</version>
    5. </dependency>
    6. </dependencies>

    如果你是针对 JDK 7 或 JDK 8,那么可以使用扩展版本的 Kotlin 标准库,其中包含为新版 JDK 所增 API 而加的额外的扩展函数。使用 kotlin-stdlib-jdk7kotlin-stdlib-jdk8 取代 kotlin-stdlib,这取决于你的 JDK 版本(对于 Kotlin 1.1.x 用 kotlin-stdlib-jre7kotlin-stdlib-jre8)。

    如果你的项目使用 或者测试设施,那么你还需要添加相应的依赖项。其构件 ID 对于反射库是 kotlin-reflect,对于测试库是 kotlin-testkotlin-test-junit

    编译只有 Kotlin 的源代码

    要编译源代码,请在 <build> 标签中指定源代码目录:

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

    需要引用 Kotlin Maven 插件来编译源代码:

    1. <build>
    2. <plugins>
    3. <plugin>
    4. <artifactId>kotlin-maven-plugin</artifactId>
    5. <version>${kotlin.version}</version>
    6. <executions>
    7. <execution>
    8. <id>compile</id>
    9. <goals> <goal>compile</goal> </goals>
    10. </execution>
    11. <execution>
    12. <goals> <goal>test-compile</goal> </goals>
    13. </execution>
    14. </executions>
    15. </plugin>
    16. </plugins>
    17. </build>

    同时编译 Kotlin 与 Java 源代码

    要编译混合代码应用程序,必须在 Java 编译器之前调用 Kotlin 编译器。按照 maven 的方式,这意味着应该使用以下方法在 maven-compiler-plugin 之前运行 kotlin-maven-plugin,确保 pom.xml 文件中的 kotlin 插件位于 maven-compiler-plugin 上面:

    1. <properties>
    2. <kotlin.compiler.incremental>true</kotlin.compiler.incremental>
    3. </properties>

    或者,使用 -Dkotlin.compiler.incremental=true 选项运行构建。

    注解处理

    请参见 (kapt)的描述。

    协程支持

    在 Kotlin 1.2 中支持是一项实验性的功能,因此当你在项目中使用协程时 Kotlin 编译器会报警告。可以将以下代码块添加到 pom.xml 文件中来关闭这一警告:

    1. <configuration>
    2. <experimentalCoroutines>enable</experimentalCoroutines>
    3. </configuration>

    Jar 文件

    要创建一个仅包含模块代码的小型 Jar 文件,请在 Maven pom.xml 文件中的 build->plugins 下面包含以下内容,其中 main.class 定义为一个属性,并指向主 Kotlin 或 Java 类:

    1. <plugin>
    2. <groupId>org.apache.maven.plugins</groupId>
    3. <artifactId>maven-jar-plugin</artifactId>
    4. <version>2.6</version>
    5. <configuration>
    6. <archive>
    7. <manifest>
    8. <addClasspath>true</addClasspath>
    9. <mainClass>${main.class}</mainClass>
    10. </manifest>
    11. </configuration>
    12. </plugin>

    要创建一个独立的(self-contained)Jar 文件,包含模块中的代码及其依赖项,请在 Maven pom.xml 文件中的 build->plugins 下面包含以下内容其中 main.class 定义为一个属性,并指向主 Kotlin 或 Java 类:

    这个独立的 jar 文件可以直接传给 JRE 来运行应用程序:

    针对 JavaScript

    为了编译 JavaScript 代码,需要使用 jstest-js 目标来执行 compile

    1. <plugin>
    2. <groupId>org.jetbrains.kotlin</groupId>
    3. <artifactId>kotlin-maven-plugin</artifactId>
    4. <version>${kotlin.version}</version>
    5. <executions>
    6. <execution>
    7. <id>compile</id>
    8. <phase>compile</phase>
    9. <goals>
    10. <goal>js</goal>
    11. </goals>
    12. </execution>
    13. <execution>
    14. <id>test-compile</id>
    15. <phase>test-compile</phase>
    16. <goals>
    17. <goal>test-js</goal>
    18. </goals>
    19. </execution>
    20. </executions>
    21. </plugin>
    1. <groupId>org.jetbrains.kotlin</groupId>
    2. <artifactId>kotlin-stdlib-js</artifactId>
    3. <version>${kotlin.version}</version>

    对于单元测试支持,你还需要添加对 kotlin-test-js 构件的依赖。

    更多信息请参阅以 Maven 入门使用 Kotlin 与 JavaScript教程。

    指定编译器选项

    可以将额外的编译器选项与参数指定为 Maven 插件节点的 <configuration> 元素下的标签:

    许多选项还可以通过属性来配置:

    1. <project ……>
    2. <properties>
    3. <kotlin.compiler.languageVersion>1.0</kotlin.compiler.languageVersion>
    4. </properties>

    支持以下属性:

    生成文档

    标准的 JavaDoc 生成插件(maven-javadoc-plugin)不支持 Kotlin 代码。要生成 Kotlin 项目的文档,请使用 ;相关配置说明请参见 Dokka README。Dokka 支持混合语言项目,并且可以生成多种格式的输出,包括标准 JavaDoc。

    对于 OSGi 支持,请参见 。

    示例