加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何在命令行中从build.sbt中提取数据

发布时间:2020-12-16 19:23:21 所属栏目:安全 来源:网络整理
导读:我想在Docker中获取类似版本,packageName等数据.我需要它为我的CI标记泊坞窗图像以供将来使用. 那么有没有可能获得像maven mvn –batch-mode -f pom.xml help这样的值:evaluate -Dexpression = project.version. 提前感谢您的帮助. 所以我的build.sbt包含几
我想在Docker中获取类似版本,packageName等数据.我需要它为我的CI标记泊坞窗图像以供将来使用.
那么有没有可能获得像maven mvn –batch-mode -f pom.xml help这样的值:evaluate -Dexpression = project.version.
提前感谢您的帮助.

所以我的build.sbt包含几个项目,现在我正在尝试使用sbt项目,sbt检查从sbt inspect build但到目前为止没有运气.

我设法从项目获取关键值,但现在我在Docker中遇到packageName问题.我使用:sbt [project_name] / [key],但对于Docker中的packageName,我得到:

sbt projectName/packageName in Docker
[error] Not a valid command: in
[error] Expected 'info'
[error] Not a valid project ID: in
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: in
[error] in
[error]   ^

这是build.sbt的一部分:

lazy val `name` = project
  .in(file("name"))
  .dependsOn(`name-dep`)
  .settings(defaults)
  .settings(
    packageName in Docker := "project/name",version := "3.1.0-SNAPSHOT",dockerExposedPorts := Seq(8080),dockerCommands ++= Seq(
      Cmd("ENTRYPOINT",s"bin/${executableScriptName.value}","-l","tcp://0.0.0.0:8081","-e","${EXTERNAL_URL}","-c","${CONNECTOR_URL}")
    ),

对于我使用的版本:

sbt name/version
[info] Loading project definition from /home/jenkins/.jenkins/workspace/project
[info] Set current project to root (in build file:/home/jenkins/.jenkins/workspace/)
[info] 3.1.0-SNAPSHOT

但我在Docker中遇到packageName问题

我的解决方案

所以我设法得到这些值:

# sbt -Dsbt.log.noformat=true name/packageName | sed -n 3p | cut -d " " -f 2
name

它不显示整个packageName(没有项目/),但我知道这是一个常量我会在CI脚本中硬编码.

# sbt -Dsbt.log.noformat=true name/version | sed -n 3p | cut -d " " -f 2
3.1.0-SNAPSHOT

若有人有更好的想法请与我分享.

小费

请注意,我使用ASCII代码对输出着色,以便在我的解决方案中使用它,你必须使用-Dsbt.log.noformat = true运行sbt,否则你的CI会抱怨ENV的值,你不会看到这个.

解决方法

我的建议是使用 sbt-native-packager.

此包装商也获得了Docker Plugin

这样就可以在版本号的sbt build上为你提供开箱即用的docker镜像.我们在所有模块中都使用sbt-package-manager.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读