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

Al-*_*far 3 java intellij-idea playframework sbt-buildinfo sbt-plugin

我认为这可能是新版本中出现的一个问题,无法解决为旧版本,我得到了带有sbt-buildinfo插件的PlayJava项目,这个问题确实很常见,因为IntelliJ一直说无法解决该符号

InjettiJ无法解析符号

这是文件:

生成的文件

可以在IntelliJ Idea sbt托管的源文件中找到解决方案,并且在这里无法引用sbt-buildinfo生成的对象,但是提供的任何解决方案都不会对我有帮助:

InjelliJ设置

真正奇怪的是,如果我“将目录取消标记为生成的源”,然后将该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"
Run Code Online (Sandbox Code Playgroud)

和我的plugins.sbt

// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.5")

addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.7.0")
Run Code Online (Sandbox Code Playgroud)

所以我想念的是什么解决方案

Jus*_*ser 5

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

  2. IntelliJ当前仅在生成的源位于正确的程序包目录中时才正确更新它们。对于sbt-buildinfo,添加设置

    buildInfoUsePackageAsPath := true

    给你build.sbt

  • 您可以在IntelliJ->`Preferences`->`Build,Execution,Deployment`->`Build Tools`->`sbt`中找到`use sbt shell for build and import`选项。 (2认同)