标签: sbt-buildinfo

我可以从代码中访问我的Scala应用程序的名称和版本(在SBT中设置)吗?

我正在使用Scala构建定义构建一个使用SBT(0.11.0)的应用程序,如下所示:

object MyAppBuild extends Build {

  import Dependencies._

  lazy val basicSettings = Seq[Setting[_]](
    organization  := "com.my",
    version       := "0.1",
    description   := "Blah",
    scalaVersion  := "2.9.1",
    scalacOptions := Seq("-deprecation", "-encoding", "utf8"),
    resolvers     ++= Dependencies.resolutionRepos
  )

  lazy val myAppProject = Project("my-app-name", file("."))
    .settings(basicSettings: _*)
    [...]
Run Code Online (Sandbox Code Playgroud)

我在流程结束时打包了一个.jar.

我的问题很简单:有没有办法从我的Scala代码中以编程方式访问应用程序的名称("my-app-name")和版本("0.1")?如果我能帮忙,我不想在两个地方重复它们.

任何指导非常感谢!

scala sbt sbt-buildinfo

58
推荐指数
2
解决办法
1万
查看次数

IntelliJ Idea sbt托管源文件

我正在使用sbt-buildinfo插件从我的构建定义生成Scala源代码,允许我从我的Scala代码中引用项目名称,版本等.

它通过生成具有以下内容的文件BuiltInfo.scala来完成此操作:

package hello

case object BuildInfo {
  val name = "helloworld"
  val version = "0.1-SNAPSHOT"
  val scalaVersion = "2.10.3"
  val sbtVersion = "0.13.2"
}
Run Code Online (Sandbox Code Playgroud)

target/scala-2.10/src_managed/main/sbt-buildinfo/BuildInfo.scala.

一切都编译,我可以参考那些vals.

但是,IntelliJ Idea不会将BuildInfo.scala识别为托管源文件,因此它会停止向我显示错误.知道怎么做吗?

谢谢!

scala intellij-idea sbt sbt-buildinfo

20
推荐指数
1
解决办法
3570
查看次数

Heroku应用程序的运行时是否可以知道它的提交ID?

我想我的Heroku应用程序(Play/Scala,在Heroku Cedar上运行)的运行时能够向我报告它是从哪个git提交的.Heroku应用程序通常由Heroku基础架构上的slug编译器构建 - 不幸的是,slug编译器将此作为此构建过程的早期部分:

删除未使用的文件,包括.git目录,.gitmodules文件,log和tmp中的任何内容,以及顶级.slugignore文件中指定的任何内容.

...所以Git信息不再可用于sbt-buildinfo我用于记录Git提交的插件.

如何在slug中记录HEAD提交?这些信息是否有可用的环境变量?

git heroku cedar sbt-buildinfo

6
推荐指数
1
解决办法
853
查看次数

sbt-buildinfo生成的对象无法被引用

我正在使用前面提到的 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
  ) …
Run Code Online (Sandbox Code Playgroud)

scala intellij-idea sbt sbt-buildinfo

5
推荐指数
1
解决办法
4023
查看次数

如何不在Play Framework中观看文件以进行更改

在编译项目时使用sbt-buildinfo创建BuildInfo.scala文件的Play Framework 2.2项目中,如何build.sbt配置以便Play Framework不会监视BuildInfo.scala文件以进行更改,如果该文件发生更改,则不会重新启动服务器?

例如,如果会话开始于:

$ sbt ~run
Run Code Online (Sandbox Code Playgroud)

并且服务器在开发模式下启动,然后在另一个终端窗口sbt中启动另一个会话(运行另一个子项目,或者只运行其他sbt任务),第二个sbt会话将更新BuildInfo.scala文件,第一个sbt会话将检测到这个并重新加载玩项目.

所以问题是如何BuildInfo.scala从监控中排除(但仍然编译它并将其包含在分发包中).

显然watchSources配置选项可能有所帮助,但在阅读文档后,我无法弄清楚如何使用它来排除文件.

scala sbt playframework playframework-2.2 sbt-buildinfo

3
推荐指数
1
解决办法
1661
查看次数

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

我认为这可能是新版本中出现的一个问题,无法解决为旧版本,我得到了带有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)

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

java intellij-idea playframework sbt-buildinfo sbt-plugin

3
推荐指数
1
解决办法
4857
查看次数