在最近的采访中,有人问我关于Maven中设置的以下属性的影响:
我知道与第二点相比,第二点只是跳过了测试的编写,但是以下内容会产生什么效果?
-Dmaven.test.skip=null
答案 0 :(得分:4)
鉴于-Dmaven.test.skip=null
,Maven Surefire插件尝试将null
强制转换为boolean
,由于无法做到这一点,该插件将恢复为该属性的默认值:{{1} }。
因此,false
等效于-Dmaven.test.skip=null
,或更简洁地说;等同于不指定-Dmaven.test.skip=false
属性。
答案 1 :(得分:0)
由于您基本上设置了系统属性,因此它取决于实际的maven插件。
surefire,故障安全和编译器插件支持maven.test.skip
属性,请参见here
所以您必须知道实现-嗯...算了吧。
我想这个问题的真正含义是,如果将系统属性设置为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
一样;)
答案 2 :(得分:0)
除true
以外的任何值都将使Maven构建的行为就像未提供系统变量或将其设置为false
一样。因此,测试将在执行Maven构建时运行