java
man
页面指定
java [options] classname [args]
标准选项
...
-D property = value 设置系统属性值。 property变量是一个没有空格的字符串,表示属性的名称。 value变量是一个表示值的字符串 属性。如果value是带空格的字符串,则将其括起来 引号(例如
-Dfoo="foo bar"
)。
当我在IntelliJ中配置Maven时(首选项>构建,执行,部署>构建工具> Maven> Runner),它允许我设置
添加“属性”时,会弹出一个对话框,允许我选择添加Maven属性"。
从上面的java
man
页面摘录判断,我希望IntelliJ将属性键值对转换为-Dkey=value
个选项。
然而,当maven由IntelliJ运行时,第一行控制台输出基本归结为:
/path/to/java
-Dvm=option
-classpath /path/to/apache-maven/boot/plexus-classworlds-2.5.2.jar
org.codehaus.classworlds.Launcher
-Dproperty=value
install -P selectedProfiles
即。 java options classname someMoreOptionsAndTheArguments
。
从那以后,IntelliJ似乎将 属性 作为参数添加到类中(呵呵?),而 VM选项 作为选项传递(如预期的那样)。
现在,在单元测试中,我添加了
Properties properties = System.getProperties();
properties.list(System.out);
它只打印property=value
但不打印jvm=option
。
为什么是VM选项(在IntelliJ中设置)没有传递给我的测试,为什么属性(似乎由IntelliJ作为参数传入)使它一直到单元测试水平?为什么在IntelliJ的添加对话框中称它为“Maven Property"”,而不是系统属性? (这是观察行为原因的线索吗?)