【问题标题】:How to configure defaults for a parameter with multiple values for a Maven plugin如何为 Maven 插件的具有多个值的参数配置默认值
【发布时间】:2010-12-12 03:49:12
【问题描述】:

我正在编写一个 Maven 插件,并且我正在为所有参数使用默认值,例如:

/**
 * The file with the site structure.
 * 
 * @parameter expression="${generateSite.siteFile}" default-value="${basedir}/src/oda/site.xml"
 */
private File siteFile;

现在我要添加一个新参数,它是一个集合。有没有办法为如下参数设置默认值?

/**
 * A list of file/directory names to exclude in the processing.
 * 
 * @parameter ????
 */
private Set<String> excludes;

【问题讨论】:

    标签: java maven-2 parameters maven-plugin defaults


    【解决方案1】:

    我的所知,这实际上是不可能的,没有真正的方法可以为具有多个值的参数类型(如数组、集合或映射)指定默认值),至少不像parameter。我过去也必须这样做,并且在阅读了 array (or collecton) as a default-value of a mojo configuration parameterconfiguring a list as default value for a plugin parameter 之类的线程后,我最终在 execute() 方法中设置了默认值,就像 Chris 在对 his answer 的评论中提到的那样(例如,参见flexmojos:wrapper 插件sourcesparameters 参数)。

    【讨论】:

    • 这就是我怀疑我会得到的答案。我对 Maven 源代码有一个简短的了解,但后来似乎我也需要 Plexus 源代码——这就是我停下来的地方。让我们假设你是对的;-)
    • 好吧,我仍然不能 100% 确定,但 Sonatype 正在开发 flexmojos,我想它们代表了最先进的技术并且是值得信赖的参考。
    【解决方案2】:

    我不认为 Set 得到明确支持,但以下方法会起作用:

    /**
     * A list of file/directory names to exclude in the processing.
     *
     * @parameter
     */
    private String[] myFiles;
    

    然后您可以使用以下方式对其进行配置:

    <myFiles>
      <param>value1</param>
      <param>value2</param>
    </myFiles>
    

    顺便说一句,这取自 this pageParameter Types With Multiple Values 部分,该部分还详细介绍了允许具有多个值的参数的其他方法。

    【讨论】:

    • 根据您链接到自己的文档,任何 java.util.Collection 都应该可以工作——这就是我提出原始计划的方式。它确实可以按照您描述的方式与 Set 一起使用。但这不是设置默认值,而是正常的项目特定配置。文档没有提到任何关于在多值参数上设置默认值(或不能)。
    • 对不起,我显然没有正确阅读问题!然而,我相信答案是否定的。几年前,我在 Maven 邮件列表上寻找类似的答案,但我只找到“我不这么认为”的答案。挖掘 Plexus 代码(Maven 使用容器),这支持了这个答案。在我们想要这样做的地方,我们最终只是在 execute() 方法中设置了默认值。
    猜你喜欢
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2012-09-10
    • 2016-10-30
    • 1970-01-01
    相关资源
    最近更新 更多