4

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

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

我知道第二点与第一点相比只是跳过了编译测试,但是有什么影响呢?

-Dmaven.test.skip=null 
4

3 回答 3

4

鉴于-Dmaven.test.skip=nullMaven Surefire 插件尝试强制null转换为 aboolean并且由于无法做到这一点,因此插件回退到此属性的默认值:false.

所以,-Dmaven.test.skip=null等价于-Dmaven.test.skip=false或者,更简洁地说;这相当于不指定maven.test.skip属性。

于 2019-02-14T20:13:16.163 回答
0

由于您基本上设置了系统属性,因此它取决于实际的 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

于 2019-02-14T20:10:14.340 回答
0

true除了会使 maven 构建的行为方式之外的任何值,就好像未提供系统变量或设置为false. 因此,测试将在执行 maven 构建时运行

于 2019-02-14T20:18:24.043 回答