IntelliJ Idea 无法解析 Scala 管理源中的符号 (sbt-buildinfo)
IntelliJ Idea can't resolve symbol that inside Scala managed sources (sbt-buildinfo)
我觉得可能是新版本出现的问题,老版本解决不了,我有一个Play Java project with sbt-buildinfo
plugin 这个问题很常见是 IntelliJ 一直说它无法解析该符号
这是文件:
可以找到一些解决方案 IntelliJ Idea sbt managed source file and here 但所提供的 none 解决方案对我有帮助:
真正奇怪的是,如果我“取消将目录标记为生成的源”,然后手动将 BuildInfo.scala
文件移动到包文件夹中 buildpkg
(我的自定义包)而不是 sbt-buildinfo
包,IntelliJ 看到那个文件,但是这个改变是没有用的,因为文件会再次生成,所有的改变都会被丢弃:
这是我的build.sbt:
lazy val root = (project in file(".")).enablePlugins(PlayJava, BuildInfoPlugin)
.settings(
buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion, buildInfoBuildNumber,
"hostname" -> java.net.InetAddress.getLocalHost.getHostName,
"gitHash" -> sys.env.getOrElse("BITBUCKET_COMMIT", "No BITBUCKET_COMMIT set")
),
buildInfoPackage := "buildpkg",
buildInfoOptions += BuildInfoOption.ToJson,
buildInfoOptions += BuildInfoOption.BuildTime
)
scalaVersion := "2.12.3"
和我的plugins.sbt:
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.5")
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.7.0")
所以我缺少什么,解决这个问题的方法
在 IntelliJ 的 sbt 设置中,启用设置 "Use sbt shell for build and import",因为源仅在 sbt 运行构建时生成。
IntelliJ 目前只会正确更新生成的源,前提是它们位于正确的包目录中。对于 sbt-buildinfo,添加设置
buildInfoUsePackageAsPath := true
给你的build.sbt
.
如果基于 SBT 的项目最初不是 "imported",也会出现此问题。
尝试解决此问题:
- 关闭有问题的 IntelliJ 项目。
- Select 导入项目
- 在“导入项目”对话框中,select "Import project from external model"
- Select"sbt"。请注意,不需要检查 "Use sbt shell for build..."。如果不单击它,您仍然可以利用自动加载。确保检查库资源。
按 Finish 并让它构建现在首次加载插件等所需的内容。
我觉得可能是新版本出现的问题,老版本解决不了,我有一个Play Java project with sbt-buildinfo
plugin 这个问题很常见是 IntelliJ 一直说它无法解析该符号
这是文件:
可以找到一些解决方案 IntelliJ Idea sbt managed source file and here
真正奇怪的是,如果我“取消将目录标记为生成的源”,然后手动将 BuildInfo.scala
文件移动到包文件夹中 buildpkg
(我的自定义包)而不是 sbt-buildinfo
包,IntelliJ 看到那个文件,但是这个改变是没有用的,因为文件会再次生成,所有的改变都会被丢弃:
这是我的build.sbt:
lazy val root = (project in file(".")).enablePlugins(PlayJava, BuildInfoPlugin)
.settings(
buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion, buildInfoBuildNumber,
"hostname" -> java.net.InetAddress.getLocalHost.getHostName,
"gitHash" -> sys.env.getOrElse("BITBUCKET_COMMIT", "No BITBUCKET_COMMIT set")
),
buildInfoPackage := "buildpkg",
buildInfoOptions += BuildInfoOption.ToJson,
buildInfoOptions += BuildInfoOption.BuildTime
)
scalaVersion := "2.12.3"
和我的plugins.sbt:
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.5")
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.7.0")
所以我缺少什么,解决这个问题的方法
在 IntelliJ 的 sbt 设置中,启用设置 "Use sbt shell for build and import",因为源仅在 sbt 运行构建时生成。
IntelliJ 目前只会正确更新生成的源,前提是它们位于正确的包目录中。对于 sbt-buildinfo,添加设置
buildInfoUsePackageAsPath := true
给你的
build.sbt
.
如果基于 SBT 的项目最初不是 "imported",也会出现此问题。
尝试解决此问题:
- 关闭有问题的 IntelliJ 项目。
- Select 导入项目
- 在“导入项目”对话框中,select "Import project from external model"
- Select"sbt"。请注意,不需要检查 "Use sbt shell for build..."。如果不单击它,您仍然可以利用自动加载。确保检查库资源。
按 Finish 并让它构建现在首次加载插件等所需的内容。