scala – 如何在命令行中从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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |