SBT:获取所有传递的参数

时间:2016-04-05 12:46:53

标签: java scala sbt

我希望获得传递给sbt调用的所有参数,包括JVM参数,而不知道提供了哪些参数。这可能吗?

这样的事情:

sbt -Dsbt.ivy.home=/tmp/.ivy2 -Divy.home=/tmp/.ivy2 -J-XX:+CMSClassUnloadingEnabled

所以我想看看传递了哪些参数,在这种情况下,它们是系统属性sbt.ivy.homeivy.home,以及JVM属性XX:+CMSClassUnloadingEnabled。我显然也需要相应的值。

如果我能把这一切都作为一个单独的字符串就可以了,也许它更现实了?

1 个答案:

答案 0 :(得分:0)

这是一个更新的示例类,可以打印出所有环境变量和其他JVM参数:

import java.util.Scanner; import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; import java.util。*;

public class VMArgs{
    public static void main(String... args){
        Properties p = System.getProperties();
        p.list(System.out);

        RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
        List<String> arguments = runtimeMxBean.getInputArguments();
        System.out.println ("------------------arguments-----------------------------");
        System.out.println(arguments);
    }
}

在评论中,您提到:-J-XX:+CMSClassUnloadingEnabled。我认为这是一个错字,-J无效。参数应为-XX:+CMSClassUnloadingEnabled

如果我使用-Xmx256m -XX:+CMSClassUnloadingEnabled JVM arg运行上述程序,则输出为(忽略系统属性):

------------------arguments-------------------
[-Xmx256m, -XX:+CMSClassUnloadingEnabled]

这表明它确实按预期捕获并输出JVM args。