【问题标题】:What is a java.io.File[] in a Maven POM?Maven POM 中的 java.io.File[] 是什么?
【发布时间】:2021-09-23 15:18:33
【问题描述】:

我经常偶然发现 Maven 插件参数的类型值文档。以excludeRoots of the maven-pmd-plugin 为例。这是一个java.io.File[]。这可能意味着它接受

<excludeRoots>root1,root2</excludeRoots>

<excludeRoots>
    <excludeRoot>root1</excludeRoot/>
    <excludeRoot>root2</excludeRoot/>
</excludeRoots>

甚至可能

<excludeRoots>
    <excludeRoot path="root1"/>
    <excludeRoot path="root2"/>
</excludeRoots>

是否有规范如何将 XML 中的非类型化字符输入解释为插件的 Java 类型。还是这取决于插件?我问的是一般行为,而不是示例中的插件,我不在乎它在这个问题中是如何工作的。

在此示例中,java.util.List 参数有什么不同?

【问题讨论】:

  • 这可能与 SO 问题无关:如果是后者,您是否有任何插件示例以允许使用类型化参数而无需询问搜索引擎或者SO怎么用?
  • 我猜是第二种解决方案,但我不确定。

标签: maven types maven-plugin


【解决方案1】:

Parameter Types With Multiple Values:

下面列出了可用作 mojo 中参数的各种类型的复合对象,以及有关如何解释 POM 中的值的任何规则。通常,为保存参数值而创建的对象的类(以及参数值中每个元素的类)确定如下(使用产生有效类的第一步):

   ...

  1. 对于数组,使用数组的组件类型(例如,使用String 作为String[] 参数); [...]

一旦定义了元素的类型,XML 文件中的文本就会被转换为适当的对象类型

对于数组(和集合),POM 中的声明是:

    <container>
      <item>value1</item>
      <item>value2</item>
    </container>

在命令行上是:

... -Dcontainer=value1,value2 ...

另见Configuring Parameters, Mapping Simple Objects

映射简单类型,如布尔或整数,非常简单。 &lt;configuration&gt; 元素可能如下所示:

<configuration>
  ...
  <myFile>c:\temp</myFile>

另见my answer to Any way to specify a FileSet as command line parameter?

还有 Maven PMD Plugin / Usage page 显示声明:

          ...
          <excludeRoots>
            <excludeRoot>target/generated-sources/stubs</excludeRoot>
          </excludeRoots>
          ...

不幸的是,与the PMD plugin's SCM page 链接的the source on GitHub 不是创建pmd:pmd page 的代码。 AbstractPmdViolationCheckMojo.java 只有 7 个 @Parameters,PmdViolationCheckMojo.java 只有 2 个 @Parameters。 excludeRoots 都不是。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2014-04-27
    • 2016-06-24
    • 2014-11-24
    相关资源
    最近更新 更多