在 sbt-native-packager 中配置 "dynamic" 命令行参数
Configure "dynamic" command line arguments in 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")
因此内容会像这样附加到 运行ner 脚本中:
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
是否有其他方法可以实现同样的目的——向生成的脚本添加更多 "dynamic" 值?我的 bash 命令有误吗? :'(
INI 文件中的参数不会展开。您可以将其添加到脚本中:
bashScriptExtraDefines += """addJava "-Djava.rmi.server.hostname=$(getIpAddress)""""
我正在尝试将命令行参数附加到由 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")
因此内容会像这样附加到 运行ner 脚本中:
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
是否有其他方法可以实现同样的目的——向生成的脚本添加更多 "dynamic" 值?我的 bash 命令有误吗? :'(
INI 文件中的参数不会展开。您可以将其添加到脚本中:
bashScriptExtraDefines += """addJava "-Djava.rmi.server.hostname=$(getIpAddress)""""