我正在使用SBT(0.11.0)构建一个应用,使用的Scala构建定义如下:
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: _*)
[...]
在这个过程的最后,我会 Package 一个jar。
我的问题很简单:有没有一种方法可以从Scala代码中以编程方式访问应用程序的名称(“my-app-name”)和版本(“0.1”)?如果可以的话,我不想在两个地方重复它们。
任何指导不胜感激!
3条答案
按热度按时间wfauudbj1#
子构建信息
我刚刚写了sbt-buildinfo.安装插件后:
编辑:上面的代码片段已经更新,以反映sbt-buildinfo的最新版本。
它通过自定义
buildInfoKeys
生成具有任何设置的foo.BuildInfo
对象。临时方法
我一直想为此做一个插件,(我写的),但这里有一个快速脚本来生成一个文件:
您可以将您的版本设置为
foo.Info.version
。muk1a3rh2#
名称和版本被插入到manifest中,您可以使用Package类的java反射访问它们。
xriantvc3#
你也可以生成一个动态配置文件,然后从scala中读取。
当你运行
sbt universal:packageBin
的时候,这个文件就在那里了。