Eclipse中重建Kotlin应用为何会删除target目录下的类文件?
解决Eclipse中Kotlin-Maven-Spring Boot项目自动构建失效问题
问题概述
在Eclipse中搭建Kotlin+Maven+Spring Boot项目时,仅手动执行Maven构建能生成目标类文件;执行Project Clean后,Eclipse自动重建只会删除target/classes下的类文件,不会重新编译Kotlin代码,导致应用无法运行。
环境配置
- Eclipse 4.26.0
- 嵌入式Maven 3.8.6
- Eclipse Kotlin插件0.8.24(含Enhanced Kotlin for Eclipse)
- Spring Tools 4 - 4.17.2.RELEASE
- OpenJDK 11.0.2
解决方案
1. 校准Kotlin编译配置
右键项目 → Properties → 进入Kotlin Compiler选项卡:
- 将
Target JVM version设置为11(与本地JDK版本匹配) - 勾选
Enable incremental compilation,提升构建效率
2. 同步Maven与Eclipse构建生命周期
- 右键项目 →
Maven→Update Project...,勾选Force Update of Snapshots/Releases后点击OK,确保依赖和配置完全同步 - 打开
Window→Preferences→Maven→Lifecycle Mappings,点击Open workspace lifecycle mappings metadata,添加以下配置,让Eclipse自动触发Kotlin编译的Maven目标:
<?xml version="1.0" encoding="UTF-8"?> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <versionRange>[1.0,)</versionRange> <goals> <goal>compile</goal> <goal>test-compile</goal> </goals> </pluginExecutionFilter> <action> <execute /> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata>
- 保存文件后重启Eclipse,使配置生效
3. 修正项目构建路径
右键项目 → Build Path → Configure Build Path:
- 在
Source选项卡中,确认src/main/kotlin已标记为Source Folder,且输出目录为target/classes - 移除无效依赖/源码目录,确保
Kotlin Runtime Library已自动添加(无需手动引入virtual目录)
4. 开启Kotlin自动编译
- 打开
Window→Preferences→General→Workspace→Build,确保Build automatically已勾选 - 进入
Kotlin→Compiler→Building,勾选Build project automatically,并将Build on resource save设为Always
5. 验证修复效果
- 执行
Project→Clean...,选择目标项目后点击OK - 等待Eclipse自动构建完成,检查
target/classes目录下是否生成Kotlin编译后的类文件 - 右键
DemoApplication.kt→Run As→Kotlin Application,确认应用正常启动
额外排查点
若上述步骤无效,可尝试:
- 卸载并重新安装Kotlin插件,建议使用与Eclipse 4.26兼容的1.8.x版本(当前0.8.24版本可能过旧)
- 检查
pom.xml中的kotlin-maven-plugin配置,确保版本与插件匹配,编译目标正确:
<plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>1.8.22</version> <executions> <execution> <id>compile</id> <goals> <goal>compile</goal> </goals> <configuration> <sourceDirs> <sourceDir>${project.basedir}/src/main/kotlin</sourceDir> <sourceDir>${project.basedir}/src/main/java</sourceDir> </sourceDirs> </configuration> </execution> <execution> <id>test-compile</id> <goals> <goal>test-compile</goal> </goals> <configuration> <sourceDirs> <sourceDir>${project.basedir}/src/test/kotlin</sourceDir> <sourceDir>${project.basedir}/src/test/java</sourceDir> </sourceDirs> </configuration> </execution> </executions> </plugin>
内容的提问来源于stack exchange,提问作者ssanchozz
相关产品推荐
相关产品推荐

