"-Dmaven.test.skip=null" 是什么意思?

4

在我的最近一次面试中,我被问到设置Maven中以下属性的影响:

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

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

-Dmaven.test.skip=null 
3个回答

4
给定 -Dmaven.test.skip=null ,Maven Surefire插件尝试将null转换为boolean,由于无法完成此操作,插件会回退到该属性的默认值:false
因此,-Dmaven.test.skip=null 等同于 -Dmaven.test.skip=false 或更简洁地说; 它相当于未指定 maven.test.skip 属性。

0

除了true之外的任何值都会使Maven构建的行为表现得好像未提供系统变量或将其设置为false一样。因此,在执行Maven构建时,测试将运行。


0

由于您基本上设置了一个系统属性,因此它取决于实际的Maven插件。

maven.test.skip属性受surefire、failsafe和编译器插件的支持,请参见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相同;)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接