【问题标题】:How to extract data from build.sbt in command line如何在命令行中从 build.sbt 中提取数据
【发布时间】:2016-05-19 02:35:44
【问题描述】:

我想以某种方式获取versionpackageName in Docker 等数据。我的 CI 需要它来标记 docker 映像以供将来使用。 那么是否有可能获得像 maven mvn --batch-mode -f pom.xml help:evaluate -Dexpression=project.version 这样的值。 提前感谢您的帮助。

所以我的 build.sbt 包含几个项目,现在我正在尝试使用来自 sbt inspect buildsbt projects,sbt inspect 但到目前为止还没有运气。

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

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

但我对packageName in Docker 有疑问

我的解决方案:

所以我设法通过以下方式获得这些值:

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

它不会显示整个 packageName(没有 project/),但我知道这是一个常量,我将在 CI 脚本中对其进行硬编码。

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

如果有人有更好的想法,请与我分享。

提示

请注意 sbt i 使用 ASCII 代码对输出进行着色,因此您可以像在我的解决方案中一样使用它,您必须使用 -Dsbt.log.noformat=true 运行 sbt,否则您的 CI 可能会抱怨 ENV 的值而您不会看到这一点。

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

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

    这个打包者也得到了Docker Plugin

    这会在 sbt build 上为您提供开箱即用的 docker 镜像以及版本号。我们在所有模块中都使用 sbt-package-manager。

    【讨论】:

    • 我们使用的是同一个打包程序,但是我如何通过命令行获取packageName in Dockerversion in Docker 的值?
    猜你喜欢
    • 1970-01-01
    • 2015-07-30
    • 2011-05-16
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 2019-07-19
    • 2018-12-07
    相关资源
    最近更新 更多