You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从命令行读取Play!应用版本及Typesafe配置值?

在SBT中读取Play应用application.conf里的版本号

你完全不用自己手动解析application.conf文件,SBT本身就有办法帮你读取Typesafe配置里的值,操作起来不复杂,刚好能满足你从命令行获取版本号、用来命名文件或者做自动Git提交的需求。

方法一:直接加载配置文件读取

你可以在build.sbt里添加一段代码,把application.conf中的app.version值加载出来,再暴露成一个可从命令行调用的任务:

import com.typesafe.config.ConfigFactory

lazy val appVersionFromConf = taskKey[String]("读取application.conf中的app.version值")

appVersionFromConf := {
  val config = ConfigFactory.parseFile(new File("conf/application.conf"))
  config.getString("app.version")
}

添加完成后,在命令行直接运行:

sbt appVersionFromConf

就能看到输出的版本号了。如果是多模块项目,记得调整conf/application.conf的路径,确保指向正确的文件位置。

方法二:借助Play插件的内置配置

如果你用的是Play官方的SBT插件,其实Play已经帮你加载好了配置,直接从Play的配置对象里读取会更简洁:

lazy val appVersionFromConf = taskKey[String]("读取application.conf中的app.version值")

appVersionFromConf := {
  play.PlayImport.PlayKeys.configuration.value.getString("app.version")
}

同样运行sbt appVersionFromConf就能拿到版本号。要是需要把这个值用到其他任务里(比如自定义打包文件名),可以这么写:

assemblyJarName := s"my-app-${appVersionFromConf.value}.jar"

适配脚本调用的小技巧

你提到已经创建了临时脚本,其实可以直接在脚本里调用SBT命令来获取纯版本号输出——用show命令能过滤掉多余日志,只返回版本值本身:

APP_VERSION=$(sbt 'show appVersionFromConf' | tail -n 1)
echo $APP_VERSION

这样就能在shell脚本里直接拿到版本号来使用了。

内容的提问来源于stack exchange,提问作者kepa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:37:46