Skip to content

构建 Kotlin 应用

build.gradle.kts

kotlin
plugins {
    kotlin("jvm") version "1.9.22"
    application
}

group = "com.example"
version = "1.0.0"

repositories {
    mavenCentral()
}

application {
    mainClass.set("com.example.MainKt")
}

dependencies {
    implementation(kotlin("stdlib"))
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
    testImplementation(kotlin("test"))
    testImplementation("org.junit.jupiter:junit-jupiter:5.10.1")
}

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
    kotlinOptions {
        jvmTarget = "17"
        freeCompilerArgs = listOf("-Xjsr305=strict")
    }
}

tasks.named<Test>("test") {
    useJUnitPlatform()
}

源码示例

kotlin
// src/main/kotlin/com/example/Main.kt
package com.example

import kotlinx.coroutines.*

suspend fun fetchData(id: Int): String {
    delay(100)  // 模拟网络请求
    return "Data for id=$id"
}

fun main() = runBlocking {
    val results = (1..5).map { id ->
        async { fetchData(id) }
    }.awaitAll()
    
    results.forEach { println(it) }
    println("All done!")
}

测试

kotlin
// src/test/kotlin/com/example/MainTest.kt
package com.example

import org.junit.jupiter.api.Test
import kotlin.test.assertEquals

class MainTest {
    @Test
    fun `addition works correctly`() {
        assertEquals(4, 2 + 2)
    }
}

运行

bash
./gradlew run
./gradlew test
./gradlew jar
java -jar build/libs/kotlin-app-1.0.0.jar