我想获得像version
,packageName in Docker
这样的数据。我需要它为我的CI标记泊坞窗图像以供将来使用。
那么有没有可能获得像maven mvn --batch-mode -f pom.xml help:evaluate -Dexpression=project.version
这样的值。
提前感谢您的帮助。
所以我的build.sbt包含几个项目,现在我正在尝试使用来自sbt inspect build的sbt 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
如果有人有更好的想法,请与我分享。
请注意,我使用ASCII代码对输出进行着色,以便在我的解决方案中使用它,你必须使用-Dsbt.log.noformat=true
运行sbt,否则你的CI会抱怨ENV的值,你不会看到此
答案 0 :(得分:1)
我的建议是使用sbt-native-packager。
此打包者也获得了Docker Plugin
这为您提供了带有版本号的sbt版本的开箱即用码头图片。我们在所有模块中使用sbt-package-manager。