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 及以上版本以支持最新功能。
结构提纲
按章节快速跳转。
介绍 Amper 项目,一个专注于用户体验和 IDE 支持的构建工具。
介绍 Kotlin Toolchain 0.11 的发布及其对 Amper 的品牌转变。
解释 Amper 已更名为 Kotlin Toolchain,并成为 Kotlin 生态的统一入口。
介绍 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.
You can install the kotlin CLI globally (outside of a project) and use it everywhere instead of ./kotlin.
Using the global kotlin command doesn’t mean you can’t use the wrapper scripts in your project.
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,这个重大变更有几个影响,你应该了解:
- 必须将
amper和amper.bat的包装脚本替换为新的kotlin和kotlin.bat包装脚本。
- 在 IntelliJ IDEA 中,必须安装 Kotlin 工具链 IDE 插件,而不是 Amper IDE 插件,后者可以安全地卸载。
全局安装
提交到你项目的包装脚本非常适合提供无需安装的克隆和构建体验,但它们并不适用于所有使用场景。
随着此次新版本的发布,你现在可以全局安装 kotlin CLI(在项目之外),并使用它,而不是使用 ./kotlin。你可以通过以下方式立即使用 SDKMAN! 安装它:
sdk install kotlintoolchain注意:你不需要使用 SDKMAN!。查看我们的文档以获取其他安装选项。
这在多个方面改善了体验:
- 从项目中的嵌套目录启动
kotlin命令更加方便。
- 你可以从任何目录使用与项目无关的命令(例如
kotlin tool jaeger或kotlin clean-shared-caches)。
- 使用
init命令创建新项目更加自然(无需手动下载包装脚本或从其他项目复制)。
使用全局 kotlin 命令并不意味着你必须在所有项目中对齐 Kotlin 工具链版本。kotlin 命令会自动找到你项目的包装脚本,并运行匹配版本的 Kotlin 工具链。
发布
库发布功能终于进入预览阶段!现在您可以将 JVM 库发布到 Maven 仓库,包括 Maven Central。
注意:Kotlin Multiplatform 库目前还无法发布,但我们正在努力解决这个问题。敬请期待!
常规 Maven 仓库
要发布到除 Maven Central 以外的 Maven 仓库,请在您的 module.yaml 文件中使用以下配置:
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 文件:
maven.username=john.doe
maven.password=MyVerySecurePassword123然后,您可以在运行发布命令时通过 ID 引用该仓库:
kotlin publish myMavenRepoId此命令发布所有启用了发布功能并声明了 ID 为 myMavenRepoId 的仓库的模块。
Maven Central
发布到 Maven Central 以繁琐著称,涉及许多步骤:源代码和 javadoc JAR 文件、PGP 签名、POM 元数据、校验和等。最新的 Kotlin 工具链会为您处理所有这些内容——您只需声明要发布的内容,其余部分由我们来处理。
您首先需要在 Maven Central 发布者门户上拥有一个账户、一个命名空间和一个用户令牌,以及一个 PGP 签名密钥。至于其他一切,Kotlin 工具链会为您提供帮助。
要发布到 Maven Central,您不需要手动声明仓库。只需在发布配置中添加 mavenCentral: enabled,然后配置 Maven Central 所需的一切内容。以下是一个最小示例:
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 发布者门户所需的凭据。完成这些后,发布只需一条命令即可:
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:
# 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:
# my-lint-plugin/plugin.yaml
tasks:
updateBaseline:
action: !runDetektForBaseline
sources: ${module.kotlinJavaSources}
outputFile: ${module.rootDir}/detekt/baseline.xml命令:
当命令名称与任务名称匹配时的简写
- updateBaseline
然后可以使用新的 kotlin do 命令运行此自定义命令:
kotlin do updateBaseline
这将运行与命令关联的任务及其依赖项。
要列出项目中所有可用的自定义命令,请使用 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}
这将替换任务中的 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
### Maven 分类符支持
现在可以向 Maven 依赖项表示法添加分类符,以依赖库的特定工件,例如:
dependencies:
- io.netty:netty-transport-native-epoll:4.2.13.Final:linux-x86_64
### run 命令改进
我们改进了 run 命令的体验,当只有一个选项适用于当前主机时。
如果项目有多个模块,但只有其中一个可以在主机上运行,现在无需显式指定模块。例如,对于以下项目:
. ├── linux-cli/ ├── macos-cli/ ├── windows-cli/ ├── shared/ ├── kotlin ├── kotlin.bat └── project.yaml
在 Windows 机器上,kotlin run 将启动 windows-cli 模块。
如果指定的模块有多个目标平台,但只有其中一个可以在主机上运行,现在无需显式指定平台。例如,对于以下模块:
linux-app/module.yaml
product: linux/app
默认情况下,linuxArm64 和 linuxX64 平台都存在
在 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
替换包装器后,您就可以使用 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