IntelliJ Idea 无法解析 Scala 管理源中的符号 (sbt-buildinfo)
Posted
技术标签:
【中文标题】IntelliJ Idea 无法解析 Scala 管理源中的符号 (sbt-buildinfo)【英文标题】:IntelliJ Idea can't resolve symbol that inside Scala managed sources (sbt-buildinfo) 【发布时间】:2018-03-27 14:07:30 【问题描述】:我认为这可能是新版本中出现的问题,并且无法作为旧版本解决,我有一个带有 sbt-buildinfo
插件的 Play Java 项目,这个问题真的很常见,因为 IntelliJ 一直说它可以' t 解析那个符号
这是文件:
可以在IntelliJ Idea sbt managed source file 和此处sbt-buildinfo generated object cannot be referenced 找到一些解决方案,但所提供的解决方案都对我没有帮助:
真正奇怪的是,如果我“取消将目录标记为生成的源”,然后将 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")
那么我缺少什么,解决方案是什么
【问题讨论】:
您可以尝试设置buildInfoUsePackageAsPath := true
看看是否有帮助?
@JustinKaeser 这太棒了,这行得通!哇!请添加答案,以便我接受:)
【参考方案1】:
在 IntelliJ 的 sbt 设置中,启用“使用 sbt shell 进行构建和导入”设置,因为只有在 sbt 运行构建时才会生成源代码。
IntelliJ 目前只会在生成的源代码位于正确的包目录中时才能正确更新它们。对于 sbt-buildinfo,添加设置
buildInfoUsePackageAsPath := true
致您的build.sbt
。
【讨论】:
您可以在IntelliJ
-> Preferences
-> Build, Execution, Deployment
-> Build Tools
-> sbt
中找到选项use sbt shell for build and import
。【参考方案2】:
如果基于 SBT 的项目一开始没有“导入”,也会出现此问题。
要尝试解决此问题:
-
关闭有问题的 IntelliJ 项目。
选择导入项目
在“导入项目”对话框中,选择“从外部模型导入项目”
选择“sbt”。请注意,不需要检查“使用 sbt shell 进行构建...”。如果您不单击此按钮,您仍然可以利用自动加载。确保检查库来源。
按 Finish 并让它构建它现在首次加载插件等所需的内容。
【讨论】:
其实已经正确导入并勾选了auto-import,否则项目中会充满unseen packages和classes的错误,请再看问题,可以看到IntelliJ简单识别项目:) 谢谢。无论如何,贾斯汀的回答是解决方案,确切地说,这条线在这里解决了我的问题buildInfoUsePackageAsPath := true
一切都已正确设置。以上是关于IntelliJ Idea 无法解析 Scala 管理源中的符号 (sbt-buildinfo)的主要内容,如果未能解决你的问题,请参考以下文章
Intellij IDEA 设置:无法解析符号 println
Scala之完美解决IntelliJ IDEA安装scala插件失败,install安装后不成功,项目中无法新建一个Scala类
IntelliJ 在创建 Scala 项目后在 build.sbt 中给出“无法解析符号”的错误
Intellij IDEA 无法使用 Play 框架解析符号
TwirlKeys.templateImports with Play 未在 IntelliJ IDEA 模板文件中解析