5

我认为这可能是新版本中出现的问题,并且无法像旧版本一样解决,我有一个带有sbt-buildinfo插件的 Play Java 项目问题很常见是 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"

和我的plugins.sbt

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

addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.7.0")

所以我错过了什么,解决方案是什么

4

2 回答 2

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

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

    buildInfoUsePackageAsPath := true

    到你的build.sbt.

于 2017-10-18T13:51:52.160 回答
-2

如果基于 SBT 的项目一开始没有“导入”,也会出现此问题。

要尝试解决此问题:

  1. 关闭有问题的 IntelliJ 项目。
  2. 选择导入项目
  3. 在“导入项目”对话框中,选择“从外部模型导入项目”
  4. 选择“sbt”。请注意,不需要检查“使用 sbt shell 进行构建...”。如果您不单击此按钮,您仍然可以利用自动加载。确保检查库来源。

按 Finish 并让它构建它现在第一次加载插件等所需的东西。

于 2018-02-26T02:53:12.110 回答