为什么SBT_OPTS的存在导致SBT重新定位-D参数?

时间:2017-09-26 12:33:07

标签: sbt

我在Ubuntu 16.04上使用SBT 0.13.16,通过标准的Ubuntu软件包安装。

问题

SBT似乎根据是否已设置-D来转置命令行中提供的SBT_OPTS参数的位置。

实施例

给出以下命令:

sbt clean -Denvironment=qa 'test-only MyTestClass'

如果未定义SBT_OPTS环境变量,则在命令行上设置的-D属性将传递给java命令。这在下面展示了初始sbt过程(11999)和衍生子过程(12053),例如

myuser  11999 11998  0 11:46 ?        00:00:00 bash /opt/sbt/bin/sbt clean -Denvironment=qa -Dservice=brm test-only MyTestClass
myuser  12053 11999 99 11:46 ?        00:01:10 java -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m -XX:MaxMetaspaceSize=256m -Denvironment=qa -jar /opt/sbt/bin/sbt-launch.jar clean test-only MyTestClass

但是,当设置SBT_OPTS环境变量时,例如如下:

SBT_OPTS=-Dsbt.boot.properties=/home/myuser/.sbt/sbt.boot.properties -Dsbt.override.build.repos=true -Dmy.repository.host=https://nexus.mydomain.com/

...提供的-D属性命令行向右移动,而是传递给sbt-launch.jar,例如。

myuser   9123  9122  0 11:45 ?        00:00:00 bash /usr/bin/sbt clean -Denvironment=qa test-only MyTestClass
myuser   9186  9123 99 11:45 ?        00:00:57 java -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m -XX:MaxMetaspaceSize=256m -Dsbt.boot.properties=/home/myuser/.sbt/sbt.boot.properties -Dsbt.override.build.repos=true -Dmy.repository.host=https://nexus.mydomain.com/ -jar /usr/share/sbt/bin/sbt-launch.jar clean -Denvironment=qa test-only MyTestClass

这样做的结果是environment系统属性在SBT构建中变得不可访问。

我已经阅读了很多SBT文档,但还没有找到任何描述此行为的内容。这是期望/预期的行为吗?

非常感谢!

埃德

0 个答案:

没有答案