【问题标题】:sbt-buildinfo generated object cannot be referencedsbt-buildinfo 生成的对象不能被引用
【发布时间】:2017-03-06 18:57:32
【问题描述】:

我正在使用上述 sbt 插件来获取我正在开发的应用程序的版本。

该项目有子模块。这里主要是build.sbt

...

lazy val abandon = (project in file(".")).
  aggregate(base, cli, gui).
  dependsOn(base, cli, gui).
  enablePlugins(BuildInfoPlugin).
  settings(commonSettings: _*).
  settings(
    name := "abandon",
    fork in run := true,
    buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion),
    buildInfoPackage := "co.uproot.abandon"
  )

lazy val base = (project in file("base")).
  settings(commonSettings: _*).
  settings(
    name := "abandon-base",
    fork in run := true
  )


lazy val cli = (project in file("cli")).
  dependsOn(base).
  settings(commonSettings: _*).
  settings(
    name := "abandon-cli",
    fork in run := true
  )

lazy val gui = (project in file("gui")).
  dependsOn(base).
  settings(commonSettings: _*).
  settings(
    name := "abandon-gui",
    fork in run := true
  )

生成的BuildInfo.scala按预期位于target/scala-2.11/src_managed/main/sbt-buildinfo/BuildInfo.scala下。

package co.uproot.abandon

import scala.Predef._

/** This object was generated by sbt-buildinfo. */
case object BuildInfo {
  /** The value is "abandon". */
  val name: String = "abandon"
  /** The value is "0.3.1". */
  val version: String = "0.3.1"
  /** The value is "2.11.8". */
  val scalaVersion: String = "2.11.8"
  /** The value is "0.13.12". */
  val sbtVersion: String = "0.13.12"
  override val toString: String = {
    "name: %s, version: %s, scalaVersion: %s, sbtVersion: %s" format (
      name, version, scalaVersion, sbtVersion
    )
  }
}

当我转到package co.uproot.abandon 中的文件并尝试引用BuildInfo.version 时,我得到了

Error:(256, 42) object BuildInfo is not a member of package co.uproot.abandon
    co.uproot.abandon.BuildInfo.version

我阅读了有关子模块和此插件 here 的问题,并最终尝试了 this 解决方法,但没有帮助。

任何帮助将不胜感激!

【问题讨论】:

  • 我有一个非常类似设置的项目,我没有遇到任何问题。在这里配置它之后,您是否在 IntelliJ 的“文件”菜单中尝试过Invalidate Caches/Restart?您使用的是什么版本的 IntelliJ/SBT/Scala 等?
  • @NathanielFord 我只是按照你的建议做了,但没有帮助。作为参考,我使用:IntelliJ - 2016.2.5 SBT - 0.13.12 Scala - 2.11.6

标签: scala intellij-idea sbt sbt-buildinfo


【解决方案1】:

问题已解决。

只需确保将target/scala-2.11/src_managed/main/sbt-buildinfo/BuildInfo.scalamain 部分设置为项目结构中的源用于特定子模块,您希望将其用于并且 strong> 整个项目。

除了语法高亮是搞砸了,所以它会以与以前相同的方式显示,即当它没有编译时。为了避免这种情况,请点击我在问题中发布的 this 中的链接。

【讨论】:

  • 啊!很高兴您找到了答案:如果您指出了您从哪个项目引用(我假设基于包的根),那就很清楚了。您应该为未来的人添加一个有效的配置!
  • 谢谢+1。此外,我只是添加了一个带有屏幕截图的答案以进一步说明。
【解决方案2】:

我想添加一张图片来说明zaxme 的答案,但我不能在 cmets 中,所以我添加另一个答案以添加有关它的更多信息。


所以,

1 - 右击target/scala-2.11/src_managed/main:


还有,

2 - 选择Mark Directory asUnmark Generated Sources Root


然后重建,它应该可以工作。

【讨论】:

  • 对我有用的是将目录标记为已排除(很高兴在这里见到你@axel-borja ;-))
  • 你可能是对的,两者都应该工作(啊哈,肯定是的:))
猜你喜欢
  • 1970-01-01
  • 2015-07-03
  • 2021-03-09
  • 2014-11-21
  • 2016-03-04
  • 1970-01-01
  • 2021-08-18
  • 2015-06-18
  • 1970-01-01
相关资源
最近更新 更多