IntelliJ重新加载Gradle后src/main/kotlin未标记为Sources Root的解决办法
解决Gradle重新加载后src/main/kotlin Sources Root失效问题
你遇到的问题本质是IDE的手动配置被Gradle的项目配置覆盖——因为模块是通过Gradle导入的,IntelliJ会严格遵循Gradle的配置同步项目结构,手动标记的Sources Root在Gradle重新加载时会被重置。根源是你的Gradle配置没有让子项目正确识别Kotlin源目录。
解决方案
修改根目录的build.gradle.kts,确保子项目正确应用Kotlin相关插件,让Gradle自动识别src/main/kotlin为源代码根目录,具体修改如下:
修改后的完整代码
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("org.springframework.boot") version "2.7.9" apply false id("io.spring.dependency-management") version "1.0.15.RELEASE" apply false kotlin("jvm") version "1.6.21" apply false kotlin("plugin.spring") version "1.6.21" apply false kotlin("plugin.jpa") version "1.6.21" apply false } allprojects { apply(plugin = "java") group = "com.jh" version = "0.0.1-SNAPSHOT" java.sourceCompatibility = JavaVersion.VERSION_11 java.targetCompatibility = JavaVersion.VERSION_11 repositories { mavenCentral() } } subprojects { apply(plugin = "org.springframework.boot") apply(plugin = "io.spring.dependency-management") // 新增:应用Kotlin相关插件 apply(plugin = "kotlin.jvm") apply(plugin = "kotlin.plugin.spring") apply(plugin = "kotlin.plugin.jpa") dependencies { implementation("org.jetbrains.kotlin:kotlin-reflect") testImplementation("org.springframework.boot:spring-boot-starter-test") } tasks.register("prepareKotlinBuildScriptModel") // 移到此处:配置子项目的Kotlin编译参数 tasks.withType<KotlinCompile> { kotlinOptions { freeCompilerArgs = listOf("-Xjsr305=strict") jvmTarget = "11" } } } tasks.withType<Test> { useJUnitPlatform() }
关键修改说明
- 根项目
plugins块中,给Kotlin相关插件加上apply false,避免在根项目不必要地应用 - 在
subprojects中添加Kotlin插件应用:kotlin.jvm插件会自动将src/main/kotlin识别为源代码根目录,Gradle同步到IDE后,无需手动标记 - 将Kotlin编译配置移到
subprojects块,确保每个子项目都能继承该配置
修改完成后,重新加载Gradle,IDE会自动识别src/main/kotlin为Sources Root,且不会再出现手动配置被覆盖的警告。
内容的提问来源于stack exchange,提问作者Leelee
相关产品推荐
相关产品推荐

