type: doc layout: reference

title: "使用 Gradle"

使用 Gradle

插件和版本

使用 kotlin-gradle-plugin 编译Kotlin的源代码和模块.

我们希望通过 kotlin.version这样的形式来定义Kotlin的版本. 可能使用的形式是:

  • X.Y-SNAPSHOT: 对应于每一个X.Y形式的发布版本, 在服务器上都会更新为对应的成功编译的版本. 这种版本是不稳定的,并且推荐您仅用于测试编译器新功能. 现阶段所有的构建版本都以0.1-SNAPSHOT的形式发布. 通过使用快照方式, 我们需要 在build.gradle文件中配置一个快照仓库.

  • X.Y.Z: 对应于发布版本和里程碑版本 X.Y.Z, 是通过手动升级的. 这是稳定的版本. 正式版会在 Maven Central Repository中发布. 并不需要在build.gradle文件中额外配置.

里程碑和版本之间的对应关系如下:

里程碑 版本

应用于JVM

为了在JVM中应用, Kotlin插件需要配置如下

apply plugin: "kotlin"

在M11版本, Kotlin源文件和Java源文件可以在同一个文件夹中存在, 也可以在不同文件夹中. 默认采用的是不同的文件夹:

project
    - main (root)
        - kotlin
        - java

如果不想使用默认选项,你需要更新对应的 sourceSets 属性

sourceSets {
    main.kotlin.srcDirs += 'src/main/myKotlin'
    main.java.srcDirs += 'src/main/myJava'
}

应用于 JavaScript

当应用于 JavaScript 的时候, 需要设置一个不同的插件:

apply plugin: "kotlin2js"

该插件仅作用于Kotlin文件,因此推荐使用这个插件来区分Kotlin和Java文件 (这种情况仅仅是同一工程中包含Java源文件的时候). 如果不使用默认选项,又为了应用于 JVM,我们需要指定源文件夹使用 sourceSets

sourceSets {
    main.kotlin.srcDirs += 'src/main/myKotlin'
}

如果你想创建一个可重用的库, 使用 kotlinOptions.metaInfo 来生成额外的二进制形式的JS文件. 这个文件应该和编译结果一起分发.

compileKotlin2Js {
    kotlinOptions.metaInfo = true
}

应用于 Android

Android的 Gradle模型和传统的Gradle有些不同, 因此如果我们想要通过Kotlin来创建一个Android应用, 应该使用 kotlin-android 插件来代替 kotlin:

buildscript {
    ...
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

Android Studio

如果你使用的是Android Studio, 下面的一些属性需要添加到文件中:

android {
  ...

  sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
  }
}

上述属性可以使kotlin目录在Android Studio中作为源码根目录存在, 所以当项目模型加载到IDE可以被正确识别.

配置依赖

我们需要添加kotlin-gradle-plugin和Kotlin标准库的依赖:

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:<version>'
  }
}

apply plugin: "kotlin" // or apply plugin: "kotlin2js" if targeting JavaScript

repositories {
  mavenCentral()
}

dependencies {
  compile 'org.jetbrains.kotlin:kotlin-stdlib:<version>'
}

使用快照版本

如果想要使用快照版本 (每日构建), 我们需要添加一个快照仓库并且将版本更改为0.1-SNAPSHOT:

buildscript {
  repositories {
    mavenCentral()
    maven {
      url 'http://oss.sonatype.org/content/repositories/snapshots'
    }
  }
  dependencies {
    classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.1-SNAPSHOT'
  }
}

apply plugin: "kotlin" // or apply plugin: "kotlin2js" if targeting JavaScript

repositories {
  mavenCentral()
  maven {
    url 'http://oss.sonatype.org/content/repositories/snapshots'
  }
}

dependencies {
  compile 'org.jetbrains.kotlin:kotlin-stdlib:0.1-SNAPSHOT'
}

使用外部注释

JDK和Android SDK的外部注释将自动配置. 如果想要为一些库添加更多的注解,需要在Gradle脚本中添加下面这一行:


kotlinOptions.annotations = file('<path to annotations>')

例子

Kotlin Repository 包含的例子:

翻译By ChiahaoLu