为Java sourceSet添加sourceDir,实现compileJava编译Kotlin目录下Java文件
解决Gradle中让compileJava编译src/main/kotlin目录下Java文件的问题
嘿,我明白你的需求——想把Java文件和Kotlin文件放在同一个src/main/kotlin目录里,让compileJava任务能编译这些Java文件对吧?默认情况下Gradle的源集约定是分开存放源码的,所以得手动调整sourceSets配置才行,我来给你说正确的写法:
正确的Kotlin DSL配置
你需要在build.gradle.kts里修改Java的源集配置,把src/main/kotlin目录添加到Java的源目录列表中:
java { sourceSets.main { java.srcDir("src/main/kotlin") } }
如果你的测试目录也有类似需求(比如src/test/kotlin里放Java测试文件),可以一并加上:
java { sourceSets { main { java.srcDir("src/main/kotlin") } test { java.srcDir("src/test/kotlin") } } }
为什么之前的配置没生效?
从你贴的代码片段来看,你只是定义了一个kotlinSrcDir变量,但没有把这个目录添加到Java源集的srcDir列表里,所以Gradle的compileJava任务根本不知道要去这个目录找Java文件。上面的配置直接把目标目录注册到Java源集里,就能让编译任务识别到了。
额外说明
- 这样配置后,
compileJava会同时处理src/main/java和src/main/kotlin里的Java文件,而kotlinCompile任务依然会处理src/main/kotlin里的Kotlin文件,两者不会冲突,还能正常处理跨语言调用(比如Java调用Kotlin,Kotlin调用Java)。 - 如果你之后想恢复默认约定,只需要把这段配置删掉就行。
内容的提问来源于stack exchange,提问作者Rahul Khimasia
相关产品推荐
相关产品推荐

