在我最近的一次采访中,有人问我 Maven 中设置的以下属性的影响:
- -DskipTests
- -Dmaven.test.skip=true
- -Dmaven.test.skip=null
我知道第二点与第一点相比只是跳过了编译测试,但是有什么影响呢?
-Dmaven.test.skip=null
在我最近的一次采访中,有人问我 Maven 中设置的以下属性的影响:
我知道第二点与第一点相比只是跳过了编译测试,但是有什么影响呢?
-Dmaven.test.skip=null
鉴于-Dmaven.test.skip=nullMaven Surefire 插件尝试强制null转换为 aboolean并且由于无法做到这一点,因此插件回退到此属性的默认值:false.
所以,-Dmaven.test.skip=null等价于-Dmaven.test.skip=false或者,更简洁地说;这相当于不指定maven.test.skip属性。
由于您基本上设置了系统属性,因此它取决于实际的 Maven 插件。
该maven.test.skip属性受surefire、故障安全和编译器插件的认可,请参见此处
所以你必须知道实现 - 好吧......算了吧。
我猜这个问题的真正含义是如果您将系统属性设置为null- 它会产生任何影响吗?
是的。
zarathustra@hel ~ % java -Dfancy=true -Dmaven.test.skip=null -XshowSettings:properties -version
Property settings:
awt.toolkit = sun.lwawt.macosx.LWCToolkit
fancy = true
file.encoding = UTF-8
file.encoding.pkg = sun.io
...
maven.test.skip = null
...
顺便说一句,您也可以写出 与我所知-DskipTests=true相同的内容;)-DskipTests
true除了会使 maven 构建的行为方式之外的任何值,就好像未提供系统变量或设置为false. 因此,测试将在执行 maven 构建时运行