如何在Maven中配置Kotlin/JS新IR编译器?旧编译器已不支持
解决Kotlin/JS旧编译器不支持问题(Maven配置迁移到新IR后端)
要迁移到Kotlin/JS的新IR后端,需要对pom.xml做以下几处关键修改:
1. 更新依赖
将原有的kotlin-stdlib替换为IR后端对应的标准库kotlin-stdlib-js:
<dependencies> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib-js</artifactId> <version>${kotlin.version}</version> </dependency> </dependencies>
2. 修改Kotlin Maven插件配置
- 移除旧的
js编译目标,替换为新IR后端的js-ir目标 - 添加插件配置,指定JS后端运行环境(如
browser或nodejs),显式启用IR后端
修改后的插件完整配置如下:
<plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>${kotlin.version}</version> <executions> <execution> <id>compile</id> <goals> <goal>compile</goal> <goal>js-ir</goal> <!-- 替换原js目标 --> </goals> </execution> <execution> <id>test-compile</id> <goals> <goal>test-compile</goal> <goal>test-js-ir</goal> <!-- 可选:编译测试代码的JS IR版本 --> </goals> </execution> </executions> <configuration> <jsTarget>browser</jsTarget> <!-- 指定目标环境,可选browser或nodejs --> <ir>true</ir> <!-- 显式启用IR后端 --> </configuration> </plugin>
完整修改后的pom.xml示例
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.group</groupId> <artifactId>artifact</artifactId> <version>0.0.1</version> <properties> <kotlin.version>1.9.10</kotlin.version> </properties> <dependencies> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib-js</artifactId> <version>${kotlin.version}</version> </dependency> </dependencies> <build> <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory> <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory> <plugins> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>${kotlin.version}</version> <executions> <execution> <id>compile</id> <goals> <goal>compile</goal> <goal>js-ir</goal> </goals> </execution> <execution> <id>test-compile</id> <goals> <goal>test-compile</goal> <goal>test-js-ir</goal> </goals> </execution> </executions> <configuration> <jsTarget>browser</jsTarget> <ir>true</ir> </configuration> </plugin> </plugins> </build> </project>
关键说明
js-ir是Kotlin 1.7+版本支持的新IR后端编译目标,完全替代了旧的js目标kotlin-stdlib-js是IR后端专属的标准库,必须替换原依赖才能保证兼容jsTarget可根据项目实际运行环境选择browser或nodejs
修改完成后,重新执行mvn compile即可完成编译。
内容的提问来源于stack exchange,提问作者ArtOfWarfare
相关产品推荐
相关产品推荐

