如何在命令行中定义复杂的 Maven 属性

How to define complex Maven properties in the comand line

我正在使用 Maven cobertura plugin 检索我的单元测试代码覆盖,我正在通过命令行使用它:

mvn cobertura:cobertura

我想做的是从命令行配置排除项。从官方文档可以看出,我们可以配置一个 instrumentation user property.

此 Instrumentation Configuration 对象具有以下结构:

<instrumentation>
  <excludes>
    <exclude>com/example/dullcode/**/*.class</exclude>
  </excludes>
</instrumentation>

有什么方法可以仅使用命令行形式配置像上面这样的复杂对象

-Dcobertura.instrumentation.excludes.<something>=com/example/dullcode/**/*.class

?

不,您不能在命令行上定义复杂参数。但是您可以实现一个技巧来完成这项工作:定义一个您在命令行上覆盖的 Maven 属性。

您可以配置插件:

<instrumentation>
  <excludes>
    <exclude>${cobertura.instrumentation.exclude}</exclude>
  </excludes>
</instrumentation>

然后,在命令行中,

-Dcobertura.instrumentation.exclude=com/example/dullcode/**/*.class

将正确排除那些 类。如果您不指定系统 属性,则不会排除任何内容。