You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 07:19:59