IntelliJ Scala添加JMH插件后主资源根目录变为测试资源根目录的问题咨询
JMH插件导致src/main/resources变为测试资源根目录的问题排查与解决
问题原因
sbt-jmh插件默认会调整项目的资源目录配置,为生成基准测试代码,它会临时将src/main/resources纳入测试编译的资源路径范围。而IntelliJ的sbt项目导入逻辑没能正确识别这种插件带来的临时配置变更,误将原本的主资源目录标记成了测试资源根目录,导致程序运行时无法正常读取其中的配置文件。
解决方法
1. 显式锁定主资源目录作用域
在build.sbt中显式声明src/main/resources为编译阶段的资源目录,避免插件覆盖默认配置:
ThisBuild / version := "0.1.0-SNAPSHOT" ThisBuild / scalaVersion := "2.13.4" ThisBuild / scapegoatVersion := "1.4.8" lazy val root = (project in file(".")) .settings( name := "my-project", // 显式指定主资源目录,锁定其编译阶段作用域 Compile / unmanagedResourceDirectories += baseDirectory.value / "src" / "main" / "resources" ) .enablePlugins(JmhPlugin)
2. 升级sbt-jmh插件版本
你当前使用的0.4.3版本较旧,后续版本修复了不少IDE兼容问题。修改plugins.sbt中的插件版本为最新稳定版(比如0.4.10):
addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.10")
3. 手动修正IDE资源目录标记(临时方案)
如果上述配置后仍未解决,可手动调整IntelliJ的目录标记:
- 右键点击
src/main/resources目录 - 选择「Mark Directory as」→「Resources Root」
完成配置修改后,记得点击IntelliJ sbt面板中的「Refresh all sbt projects」按钮,让IDE重新加载项目结构。
内容的提问来源于stack exchange,提问作者Zaryab Ali
相关产品推荐
相关产品推荐

