-Dmaven.test.skip = null是做什么的?

时间:2019-02-14 19:41:19

标签: maven

在最近的采访中,有人问我关于Maven中设置的以下属性的影响:

  1. -DskipTests
  2. -Dmaven.test.skip = true
  3. -Dmaven.test.skip = null

我知道与第二点相比,第二点只是跳过了测试的编写,但是以下内容会产生什么效果?

-Dmaven.test.skip=null 

3 个答案:

答案 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构建时运行