java - IntelliJ Idea 无法解析 Scala 管理源中的符号 (sbt-buildinfo)

标签 java intellij-idea playframework sbt-plugin sbt-buildinfo

我认为这可能是新版本出现的问题,并且无法像旧版本那样解决,我得到了一个带有 sbt-buildinfo 插件的 Play Java 项目问题很常见是IntelliJ 一直说它无法解析该符号

InjettiJ can't resolve symbol

这是文件:

Generated file

可以找到一些解决方案IntelliJ Idea sbt managed source file在这里 sbt-buildinfo generated object cannot be referenced但是所提供的解决方案都对我没有帮助:

InjelliJ settings

真正奇怪的是,如果我“取消将目录标记为生成的源”,然后将该 BuildInfo.scala 文件手动移动到包文件夹到 buildpkg(我的自定义包)而不是 sbt-buildinfo 包,IntelliJ 看到那个文件,但是这个更改是无用的,因为文件将再次生成并且所有更改都将被丢弃:

Wow!

这是我的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")

所以我缺少的是什么解决方案

最佳答案

  1. 在 IntelliJ 的 sbt 设置中,启用设置“使用 sbt shell 进行构建和导入”,因为只有当 sbt 运行构建时才会生成源。

  2. IntelliJ 目前只会正确更新生成的源代码,前提是它们位于正确的包目录中。对于 sbt-buildinfo,添加设置

    buildInfoUsePackageAsPath := true

    到你的build.sbt

关于java - IntelliJ Idea 无法解析 Scala 管理源中的符号 (sbt-buildinfo),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46763773/

相关文章:

java - java中的变量有问题

scala - 时间段后的Scala智能缩进

mysql - EBean: java.lang.IllegalStateException: Bean 类 models.User 没有增强?

java - 如何在基于 Java 的 Android 应用程序中实现 Datastore?

java - 为什么我的ArrayList包含添加到列表中的最后一项的N个副本?

java - 现代 Java 实践中有关 java 流 dropWhile 示例的问题

android - 运行时异常运行 robolectric 测试 IntelliJ

java - 如何判断在 IntelliJ 中调试时是否触发了 Java 异常?

java - 向 play 框架项目添加更多源文件夹

javascript - 重定向到 .scala.html 文件(Scala Play)仅显示纯文本