我在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文档,但还没有找到任何描述此行为的内容。这是期望/预期的行为吗?
非常感谢!
埃德