The JetBrains Blog

Kotlin Toolchain 0.11: The Next Step for Amper

8.5内容质量
Kotlin Toolchain 0.11: The Next Step for Amper

TL;DR · AI 摘要

Kotlin Toolchain 0.11 正式发布,更名为 Kotlin Toolchain 并进入 Alpha 阶段,提供统一的 Kotlin 开发入口。

核心要点

  • Kotlin Toolchain 0.11 支持发布 JVM 库和新插件开发 API。
  • 使用 kotlin 命令可创建、构建、运行和测试项目。
  • 推荐使用 IntelliJ IDEA 2026.1.2 及以上版本以支持最新功能。

结构提纲

按章节快速跳转。

  1. 介绍 Amper 项目,一个专注于用户体验和 IDE 支持的构建工具。

  2. §Kotlin Toolchain 0.11: The Next Step for Amper

    介绍 Kotlin Toolchain 0.11 的发布及其对 Amper 的品牌转变。

  3. 解释 Amper 已更名为 Kotlin Toolchain,并成为 Kotlin 生态的统一入口。

  4. 介绍 Kotlin Toolchain 的全局安装方式,包括使用 SDKMAN! 安装。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Kotlin Toolchain 0.11
    • 品牌转变
      • 从 Amper 更名为 Kotlin Toolchain
      • 进入 Alpha 阶段
    • 新功能
      • 支持发布 JVM 库
      • 新插件开发 API
      • 开发者体验改进
    • 安装方式
      • 使用 SDKMAN! 全局安装
      • 项目内使用 wrapper 脚本

金句 / Highlights

值得收藏与分享的关键句。

  • The Kotlin Toolchain is that cohesive entry point. It provides a single command, kotlin, which allows you to create a project, build, run, and test it, and configure it for packaging and publishing.

    第 3 段

    ⬇︎ 下载 PNG𝕏 分享到 X
  • You can install the kotlin CLI globally (outside of a project) and use it everywhere instead of ./kotlin.

    第 4 段

    ⬇︎ 下载 PNG𝕏 分享到 X
  • Using the global kotlin command doesn’t mean you can’t use the wrapper scripts in your project.

    第 4 段

    ⬇︎ 下载 PNG𝕏 分享到 X
#Kotlin#JetBrains#构建工具#IDE
打开原文

Kotlin 工具链 0.11:Amper 的下一步 —— JetBrains 博客

Amper

专注于用户体验和 IDE 支持的项目配置和构建工具。

尝试 Amper

Kotlin 工具链 0.11:Amper 的下一步

Joffrey Bion

Amper 0.11.0 已发布,你会立即注意到产品品牌定位的转变。如果你错过了 KotlinConf 的主题演讲(观看录像),这里有一个重点:Amper 已经演变为 Kotlin 工具链,并且现在进入 Alpha 阶段!此次发布实现了这一转变,同时带来了发布 JVM 库的能力、新的插件开发 API 以及多个开发者体验的改进。

继续阅读以了解详情,并查看发布说明以获取完整的更改和错误修复列表。

为了使用 Kotlin 工具链的最新功能,请使用 IntelliJ IDEA 2026.1.2(或更新版本)。确保已安装最新版本的 Kotlin 工具链插件。

Amper 现在是 Kotlin 工具链

当我们推出 Amper 时,目标是尝试一种统一、声明式的构建体验。随着项目的演进,很明显生态系统不仅仅需要另一个构建工具,它需要一个进入 Kotlin 所有功能的统一入口点。

Kotlin 工具链就是这个统一的入口点。它提供了一个单一的命令 kotlin,允许你创建项目、构建、运行和测试它,并为其打包和发布进行配置。将来,它甚至可以让你格式化代码、生成文档等。无需一开始就做出构建工具的决策;在编写第一行代码之前,无需复杂的插件配置。

当然,我们并没有从零开始。我们在 Amper 中构建的一切都转移到了 Kotlin 工具链,这使得该项目可以直接进入 Alpha 阶段!这个标签意味着 JetBrains 承诺支持它,因此我们希望你能尝试它并分享你的反馈。

如果你已经在使用 Amper,这个重大变更有几个影响,你应该了解:

  • 必须将 amperamper.bat 的包装脚本替换为新的 kotlinkotlin.bat 包装脚本。
  • 在 IntelliJ IDEA 中,必须安装 Kotlin 工具链 IDE 插件,而不是 Amper IDE 插件,后者可以安全地卸载。

全局安装

提交到你项目的包装脚本非常适合提供无需安装的克隆和构建体验,但它们并不适用于所有使用场景。

随着此次新版本的发布,你现在可以全局安装 kotlin CLI(在项目之外),并使用它,而不是使用 ./kotlin。你可以通过以下方式立即使用 SDKMAN! 安装它:

code
sdk install kotlintoolchain

注意:你不需要使用 SDKMAN!。查看我们的文档以获取其他安装选项。

这在多个方面改善了体验:

  • 从项目中的嵌套目录启动 kotlin 命令更加方便。
  • 你可以从任何目录使用与项目无关的命令(例如 kotlin tool jaegerkotlin clean-shared-caches)。
  • 使用 init 命令创建新项目更加自然(无需手动下载包装脚本或从其他项目复制)。

使用全局 kotlin 命令并不意味着你必须在所有项目中对齐 Kotlin 工具链版本。kotlin 命令会自动找到你项目的包装脚本,并运行匹配版本的 Kotlin 工具链。

发布

库发布功能终于进入预览阶段!现在您可以将 JVM 库发布到 Maven 仓库,包括 Maven Central。

注意:Kotlin Multiplatform 库目前还无法发布,但我们正在努力解决这个问题。敬请期待!

常规 Maven 仓库

要发布到除 Maven Central 以外的 Maven 仓库,请在您的 module.yaml 文件中使用以下配置:

code
product: jvm/lib

repositories:
  - id: myMavenRepoId
    url: https://maven.pkg.github.com/my-org/my-maven-repo 
    publish: true
    credentials:
      file: creds.properties # 包含您的凭据的属性文件 
      usernameKey: maven.username # 包含用户名的属性名称
      passwordKey: maven.password # 包含密码的属性名称

settings:
 publishing:
   enabled: true
   group: com.example
   artifactId: greeter # 可选,默认为模块名称
   version: 1.0.0

请提供在仓库配置中引用的凭据文件,例如这个 creds.properties 文件:

code
maven.username=john.doe
maven.password=MyVerySecurePassword123

然后,您可以在运行发布命令时通过 ID 引用该仓库:

code
kotlin publish myMavenRepoId

此命令发布所有启用了发布功能并声明了 ID 为 myMavenRepoId 的仓库的模块。

Maven Central

发布到 Maven Central 以繁琐著称,涉及许多步骤:源代码和 javadoc JAR 文件、PGP 签名、POM 元数据、校验和等。最新的 Kotlin 工具链会为您处理所有这些内容——您只需声明要发布的内容,其余部分由我们来处理。

您首先需要在 Maven Central 发布者门户上拥有一个账户、一个命名空间和一个用户令牌,以及一个 PGP 签名密钥。至于其他一切,Kotlin 工具链会为您提供帮助。

要发布到 Maven Central,您不需要手动声明仓库。只需在发布配置中添加 mavenCentral: enabled,然后配置 Maven Central 所需的一切内容。以下是一个最小示例:

code
product: jvm/lib

description: 为这个特定模块提供一个有意义的描述

settings:
  publishing:
    enabled: true
    group: com.example # 该组必须与您的 Maven Central 命名空间匹配
    version: 1.0.0
    # artifactId 是可选的,默认为模块名称
    mavenCentral: enabled
    signArtifacts: true # 自动对您的工件进行签名,不需要外部 GPG 二进制文件
    publishSources: true
    pom:
      url: https://example.com
      scm: https://github.com/my-org/example.git # SCM 连接和开发连接将自动从这里推导
      developers:
        - name: John Doe
      licenses:
        - name: MIT
          url: https://opensource.org/license/mit

查看文档,了解如何传递用于签署工件和上传到 Maven Central 发布者门户所需的凭据。完成这些后,发布只需一条命令即可:

code
kotlin publish mavenCentral

此命令构建并签署每个工件,将它们压缩成 Maven Central 部署包,上传该包并等待其验证。然后,您可以通过 Central 门户 UI 检查部署并完成发布。如果您信任流水线,还可以通过设置 publishingMode: auto 跳过手动验证并完全自动化发布。查看文档以了解更多关于发布模式的信息。

Cinterop 支持

Kotlin 工具链现在可以从模块中 cinterop 文件夹内的定义文件(.def)生成 C 库的自定义绑定。

IDE 还在项目同步过程中提供帮助,通过生成绑定来协助开发。

终端 UI 改进

我们对 kotlin 命令的输出进行了多项改进。

我们引入了更清晰的任务完成进度指示器,主进度条也与终端的原生进度指示器集成:

我们还改进了 Kotlin JVM 编译器报告的诊断信息的显示方式(需要 Kotlin 2.4.0-Beta2 或更新版本):

IDE 改进

库源代码下载

现在,库的源代码会在同步完成后自动下载。

由于同步首先完成,您可以在源代码在后台下载的同时立即开始处理项目。

模块级别的依赖解析

之前,IDE 插件中的依赖解析是在项目级别进行的,与 CLI 不同。这可能导致模块中依赖版本不正确,或编辑器中出现错误的警告。我们已将行为与 CLI 对齐,现在每个模块都有自己的解析范围,所有诊断信息都保持一致。

插件开发改进

为本地插件作者提供了多项新功能,包括新的检查和命令声明、用于任务输入的新 API,以及诊断信息的改进。

新的引用

在编写 plugin.yaml 以连接任务输入时,可以使用一些内置的引用以访问项目信息。我们引入了两个新的引用以覆盖一些常见情况:

  • ${project.rootDir} 可用于访问项目的根目录。
  • ${module.classes} 可用于访问包含原始编译类文件的目录。

自定义检查

新的 kotlin check 命令旨在确保项目通过所有质量检查。默认情况下,它运行常规的单元测试,插件可以注册其他检查,命令应运行这些检查。

要在插件中引入自定义检查,请使用顶级列表 checks:

code
# my-lint-plugin/plugin.yaml
tasks:
  runLinter:
    action: !kotlinJavaLint
      sources: ${module.kotlinJavaSources}

checks:
  - name: lint
    performedBy: runLinter

上述 lint 检查也可以通过 kotlin check lint 单独运行。

要列出项目中的检查,请使用 kotlin show checks 命令。有关自定义检查的更多信息,可以阅读插件文档。

自定义命令

有时,您需要为插件用户公开一个公共入口点。例如,您可能希望提供生成变更日志、按需打印某些信息或发布自定义分发格式的功能。由于您的插件任务默认应被视为私有,我们引入了一个名为自定义命令的新概念,用于表示这些公共入口点。

自定义命令通过常规任务实现,因此它可以获取构建中的数据(如源文件、编译的 JAR 或运行时类路径信息),并依赖于其他任务。要注册与您的任务相关联的命令,请使用 plugin.yaml 中新的顶级部分 commands:

code
# my-lint-plugin/plugin.yaml
tasks:
  updateBaseline:
    action: !runDetektForBaseline
      sources: ${module.kotlinJavaSources}
      outputFile: ${module.rootDir}/detekt/baseline.xml

命令:

当命令名称与任务名称匹配时的简写

  • updateBaseline
code

然后可以使用新的 kotlin do 命令运行此自定义命令:

kotlin do updateBaseline

code

这将运行与命令关联的任务及其依赖项。

要列出项目中所有可用的自定义命令,请使用 kotlin show commands。有关自定义命令的更多信息,请参阅插件文档。

### 注册生成文件的新方式

我们引入了一个新的顶级部分,名为 generated,用于在 plugin.yaml 中注册生成的源代码、资源和类。从 0.11.0 版本开始,当任务动态提供本地库时,您甚至可以注册 cinterop 定义:

tasks: generateStuff: action: !myGenerateStuffAction outputSources: ${taskOutputDir}/src outputResources: ${taskOutputDir}/res outputDefFiles: ${taskOutputDir}/cinterop

generated: sources:

  • directory: ${tasks.generateStuff.action.outputSources}

language: kotlin resources:

  • directory: ${tasks.generateStuff.action.outputResources}

cinteropDefinitions:

  • directory: ${tasks.generateStuff.action.outputDefFiles}
code

这将替换任务中的 markOutputAs 属性,该属性已弃用,即将被移除。这样,所有对构建有贡献的输出都可以以类似的方式注册,并且可以由人类、AI 代理和其他工具在各自的部分中一目了然地识别。

## 其他改进

### lib 重命名为 kmp/lib

lib 产品类型已重命名为 kmp/lib,以更好地反映其在引入 jvm/lib 产品类型后的含义。lib 值已弃用,我们计划在即将发布的 Kotlin 工具链版本中将其移除。

### 嵌套模板

现在模板可以应用其他模板,允许您构建一个逻辑的设置层次结构。语法相同,只需在模板文件中使用 apply 部分:

spring.module-template.yaml

apply:

  • ./jvm.module-template.yaml

settings: springBoot: enabled

code

### Maven 分类符支持

现在可以向 Maven 依赖项表示法添加分类符,以依赖库的特定工件,例如:

dependencies:

  • io.netty:netty-transport-native-epoll:4.2.13.Final:linux-x86_64
code

### run 命令改进

我们改进了 run 命令的体验,当只有一个选项适用于当前主机时。

如果项目有多个模块,但只有其中一个可以在主机上运行,现在无需显式指定模块。例如,对于以下项目:

. ├── linux-cli/ ├── macos-cli/ ├── windows-cli/ ├── shared/ ├── kotlin ├── kotlin.bat └── project.yaml

code

在 Windows 机器上,kotlin run 将启动 windows-cli 模块。

如果指定的模块有多个目标平台,但只有其中一个可以在主机上运行,现在无需显式指定平台。例如,对于以下模块:

linux-app/module.yaml

product: linux/app

默认情况下,linuxArm64 和 linuxX64 平台都存在

code

在 ARM 机器上,kotlin run -m linux-app 将启动应用的 ARM64 版本;在 x86 机器上,将启动应用的 x86-64 版本。

## 更新的默认版本

我们更新了一些工具链和框架的默认版本:

- Kotlin 2.3.21

- Compose Hot Reload 1.1.1

- KSP 2.3.7

- Ktor 3.4.3

- SpringBoot 4.0.6

- Lombok 1.18.46

- JUnit Platform 6.0.3

## 尝试 Kotlin 工具链 0.11.0

要开始使用 Kotlin 工具链,请查看我们的入门指南。根据您的学习风格,您可以查看一些示例、跟随教程或阅读全面的用户指南。

尝试 Kotlin 工具链

如果您之前使用过 Amper,您将无法通过常规的自动更新路径将安装迁移到 Kotlin 工具链。相反,您应该将项目中的 amper 和 amper.bat 替换为 Kotlin 的包装器。您可以通过全局安装工具链,然后使用 Kotlin CLI 在项目中生成新的 Kotlin 包装器来实现这一点:

kotlin update --create

code

替换包装器后,您就可以使用 kotlin update 进行未来的更新了。

## 分享您的反馈

Kotlin 工具链仍在积极开发中。您可以通过加入 #kotlin-toolchain Slack 频道的讨论,或在 YouTrack 问题中分享您的建议和想法,来提供关于您使用体验的反馈。您的意见和使用案例有助于塑造 Kotlin 工具链的未来!

构建工具

命令行界面

- 分享

- Facebook

- Twitter

- LinkedIn

上一篇博客

Amper 0.10 – JDK 提供、Maven 转换器、自定义编译器插件等

## 发现更多

#### Amper 0.10 – JDK 提供、Maven 转换器、自定义编译器插件等

Amper 是 JetBrains 推出的一款实验性、独立的构建工具,用于服务器端和 Kotlin 多平台开发。继续阅读以了解最新更新!

Kirill Likhodedov

#### Amper 更新,2025 年 11 月 – 可扩展性预览

#### Amper 更新,2025 年 10 月 – Compose 热重载和用户体验改进

#### Amper 更新,2025 年 5 月 – 用于 Kotlin、服务器端和多平台的独立构建工具

Dmitry Savvinov