Kotlin Toolchain 0.11 发布:Amper正式演变为Kotlin工具链
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! 立即安装:
注意: 您不必使用 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 中使用以下配置:
提供仓库配置中引用的凭据文件,例如这个 creds.properties:
然后,您可以在运行 publish 命令时通过 ID 引用仓库:
该命令会发布所有已启用发布并声明了 ID 为 myMavenRepoId 的仓库的模块。
Maven Central
发布到 Maven Central 通常是一个繁琐的过程,涉及许多步骤:源码和 javadoc JAR、PGP 签名、POM 元数据、校验和等。最新的 Kotlin 工具链为您完成所有这些工作——您只需声明要发布什么,其余由我们处理。
您首先需要在 Maven Central Publisher Portal 上有一个账户、一个命名空间和一个用户令牌,以及一个 PGP 签名密钥。其他一切,Kotlin 工具链都会为您处理。
要发布到 Maven Central,您无需手动声明仓库。只需在发布配置中添加 mavenCentral: enabled,并配置 Maven Central 所需的所有内容。以下是一个最小示例:
请查看文档了解如何传递凭据以签名工件并上传到 Maven Central Publisher Portal。之后,发布只需一个命令:
此命令会构建并签名每个工件,将其压缩为 Maven Central 部署包,上传该包,然后等待验证。之后您可以通过 Central Portal UI 检查部署并完成发布。如果您信任这个管道,也可以通过 publishingMode: auto 跳过手动验证,完全自动化发布。请查看文档了解更多关于发布模式的信息。
Cinterop 支持
Kotlin 工具链现在可以从放置在模块 cinterop 文件夹中的定义文件(.def)生成 C 库的自定义绑定。
[LOADING...]
IDE 还会在项目同步过程中提供帮助,生成绑定。 [LOADING...]
终端 UI 改进
我们对 kotlin 命令的输出进行了多项改进。
我们为已完成的任务引入了更好的进度指示器,主进度条与您终端的原生进度指示器集成: [LOADING...]
我们还改进了 Kotlin JVM 编译器报告诊断信息的渲染方式(需要 Kotlin 2.4.0-Beta2 或更新版本): [LOADING...]
IDE 改进
库源码下载
现在,库的源码会自动作为同步后活动下载。 [LOADING...]
由于同步首先完成,您可以立即开始处理项目,而源码在后台下载。
模块级依赖解析
以前,IDE 插件中的依赖解析是在项目级别进行的,这与 CLI 不同。这可能导致模块中的依赖版本不正确或编辑器中的警告不准确。我们已将其行为与 CLI 对齐,因此现在每个模块都有自己的解析范围,所有诊断信息也保持一致。
插件开发改进
为本地插件作者提供了多项新功能,包括新的 checks 和 commands 声明、任务输入的新 API 以及诊断改进。
新引用
当编写 plugin.yaml 来连接任务输入时,可以使用一些内置引用来访问项目信息。我们引入了两个新的引用以覆盖常见情况:
${project.rootDir}用于访问项目的根目录。${module.classes}用于访问包含原始编译类文件的目录。
自定义检查
新的 kotlin check 命令旨在确保项目通过所有质量检查。默认情况下,它运行常规的单元测试,插件可以注册该命令应运行的其他检查。
要在插件中引入自定义检查,请使用 checks 顶层列表:
上述 lint 检查也可以单独运行,使用 kotlin check lint。
要列出项目中的检查,请使用 kotlin show checks 命令。您可以在插件文档中了解更多关于自定义检查的信息。
自定义命令
有时您需要为插件用户暴露一个公共入口点。例如,您可能希望提供生成变更日志、按需打印信息或发布自定义分发格式的能力。由于您的插件任务默认应视为私有,我们引入了一个称为自定义命令的新概念来表示这些公共入口点。
自定义命令使用常规任务实现,因此它可以从构建中获取数据(例如源文件、编译后的 JAR 或运行时 classpath 信息),并依赖其他任务。要注册与您的任务关联的命令,请在 plugin.yaml 中使用新的 commands 顶层部分:
然后,您可以使用新的 kotlin do command 运行此自定义命令:
这将运行与该命令关联的任务及其依赖项。
要列出项目中所有可用的自定义命令,请使用 kotlin show commands。在插件文档中了解更多关于自定义命令的信息。
注册生成文件的新方式
我们在 plugin.yaml 中引入了一个名为 generated 的新顶层部分,用于注册生成的源文件、资源和类。从 0.11.0 开始,您甚至可以在任务动态提供原生库时注册 cinterop 定义:
这取代了任务内部的 markOutputAs 属性,该属性已弃用,将很快被移除。通过这种方式,所有贡献回构建的输出都以类似方式注册,可以在各自部分一目了然地被人、AI 代理和其他工具识别。
其他改进
lib 重命名为 kmp/lib
lib 产品类型已重命名为 kmp/lib,以更好地反映其在引入 jvm/lib 产品类型后所代表的含义。lib 值已弃用,我们计划在即将发布的 Kotlin 工具链版本中移除它。
嵌套模板
模板现在可以应用其他模板,允许您构建设置项的层级结构。语法相同,只需在模板文件中使用 apply 部分:
Maven 分类器支持
您现在可以向 Maven 依赖项表示法添加分类器,以依赖库的特定工件,例如:
run 命令改进
我们改进了 run 命令的体验,特别是在当前主机只有一个合适选项的情况下。
如果项目有多个模块,但只有一个可以在宿主机上运行,则不再需要显式指定模块。例如,给定以下项目:
kotlin run 将在 Windows 机器上启动 windows-cli 模块。
如果指定的模块有多个目标平台,但只有一个可以在宿主机上运行,则不再需要显式指定平台。例如,给定以下模块:
kotlin run -m linux-app 将在 ARM 机器上启动 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 进行后续更新。
分享您的反馈
Kotlin 工具链仍处于实验阶段,正在积极开发中。您可以通过加入 #kotlin-toolchain Slack 频道 的讨论,或在 YouTrack 问题 中分享您的建议和想法,来提供关于您使用体验的反馈。您的意见和用例将帮助塑造 Kotlin 工具链的未来!