bash - 在 sbt-native-packager 中配置 "dynamic"命令行参数

标签 bash scala sbt jmx sbt-native-packager

我正在尝试将命令行参数附加到 sbt-native-packager 生成的标准脚本中,但我无法弄清楚如何在阅读文档后获得我想要的行为。

基本上,我想将这样的内容添加到我的 applicaiton.ini 文件中。

-server
-J-Xms256m
-J-Xmx512m
-Dcom.sun.management.jmxremote=true 
-Dcom.sun.management.jmxremote.port=1616 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Djava.rmi.server.hostname=$(getIpAddress) 

到目前为止一切都很好,但您可能已经注意到$(getIpAddress)。我想要从将在主机上运行的函数中分配一个值。

我可以将函数 getIpAddress 添加到脚本模板中:

bashScriptExtraDefines ++= 
   IO.readLines(sourceDirectory.value / "scripts" / "find_ip.sh")

因此内容会附加到运行程序脚本中,如下所示:

getIpAddress() {
    echo 10.0.1.23 .  # impl snipped for brevity
}

# java_cmd is overrode in process_args when -java-home is used
declare java_cmd=$(get_java_cmd)

# if configuration files exist, prepend their contents to $@ so it can be processed by this runner
[[ -f "$script_conf_file" ]] && set -- $(loadConfigFile "$script_conf_file") "$@"

run "$@"

set -- $(loadConfigFile "$script_conf_file") "$@" 位在 java 命令前面加上我的 application.ini 的内容,但它不会评估函数。

所以,我知道内容是在 java 命令前面加上 -- 但我不知道是否可以让它评估 $(getIpAddress)。当我执行脚本时,输出如下所示,表明它没有调用该函数。我需要这里的解析值。

$ ./my-app -v
# Executing command line:
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/bin/java
-Xms256m
-Xmx512m
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=1616
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=$(getIpAddress)
-cp
/Users/toby/my-app.jar
my.app.Main
-serve

是否有其他方法可以实现同样的目的——向生成的脚本添加更多“动态”值?我的 bash 命令有误吗? :'(

最佳答案

INI 文件中的参数不会被扩展。您可以将其添加到脚本中:

bashScriptExtraDefines += """addJava "-Djava.rmi.server.hostname=$(getIpAddress)""""

关于bash - 在 sbt-native-packager 中配置 "dynamic"命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49944085/

相关文章:

bash - 在 Bash 中替换垂直线

linux - bash linux 中的 Ceil 只有 float

scala - 在 SBT 中运行测试套件之前如何启动服务器?

Scala 函数不按名称用大括号(大括号)传递

scala - play 框架 - build.sbt 中的错误解析表达式

bash - Shell 重定向 i/o 顺序

scala - 没有路径的路径依赖类型?

scala - 如何强制 Scala 使用不同的库版本?

sbt: "impossible to get artifacts when data has not been loaded. IvyNode = org.antlr#stringtemplate;3.2.1"

bash - 默认情况下,bash 是否在/usr/local/etc/bash_completion.d 中生成 bash 完成文件?