无法引用 sbt-buildinfo 生成的对象
sbt-buildinfo generated object cannot be referenced
我正在使用上述 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 and ultimately tried this 解决方法,但这没有帮助。
任何帮助将不胜感激!
问题已解决。
只需确保将 target/scala-2.11/src_managed/main/sbt-buildinfo/BuildInfo.scala
的 main
部分设置为项目结构中的源代码 对于您要使用的特定子模块它是为了 而不是 整个项目。
除此之外,语法突出显示被搞砸了,所以它会以与以前相同的方式显示,即当它没有编译时。为避免这种情况,请遵循我在问题中发布的 this 中的 link。
我想添加一张图片来说明 zaxme
答案,但我不能在评论中添加,所以我添加了另一个答案以添加更多相关信息。
所以,
1 - 右击 target/scala-2.11/src_managed/main
:
而且,
2 - Select Mark Directory as
和 Unmark Generated Sources Root
:
然后重建,应该可以了。
我正在使用上述 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 and ultimately tried this 解决方法,但这没有帮助。
任何帮助将不胜感激!
问题已解决。
只需确保将 target/scala-2.11/src_managed/main/sbt-buildinfo/BuildInfo.scala
的 main
部分设置为项目结构中的源代码 对于您要使用的特定子模块它是为了 而不是 整个项目。
除此之外,语法突出显示被搞砸了,所以它会以与以前相同的方式显示,即当它没有编译时。为避免这种情况,请遵循我在问题中发布的 this 中的 link。
我想添加一张图片来说明 zaxme
答案,但我不能在评论中添加,所以我添加了另一个答案以添加更多相关信息。
所以,
1 - 右击 target/scala-2.11/src_managed/main
:
而且,
2 - Select Mark Directory as
和 Unmark Generated Sources Root
:
然后重建,应该可以了。