我正在编写一个maven插件,该插件的参数为String []。

像这样:

/**
* @parameter expression="${args}"
*/
protected String[] args;


可以通过POM像这样利用:

<args>
  <arg>arg1</arg>
  <arg>arg2</arg>
<args>


但是我想从命令行发送

-Dargs={arg1, arg2}


这可能吗?

最佳答案

据我所知,您不能直接执行此操作,但是接受带分隔符的String并将其自己拆分为数组是很常见的做法。

例如,maven-site-plugin允许您指定以逗号分隔的语言环境字符串,而maven-scala-plugin通过允许您使用管道分隔符定义参数来处理此问题。您可以查看相关的Mojos,以了解如何处理该参数。

下面是一些用法示例:

网站插件:

-Dlocales=enGB,frFR


Scala插件:

-DaddArgs=arg1|arg2|arg3


更新:如果要更优雅地处理此问题,可以使用maven-shared-io允许定义外部描述符文件,然后将描述符位置作为属性传递。这意味着单个命令行参数可以引用配置结构。

如果听起来适合您,请查看描述如何在属性插件中使用外部描述符的answer或与xml-maven-plugin相似的answer。或者,您可以只看一下汇编插件以获取想法。

关于maven-2 - 字符串数组作为Maven插件的命令行参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1335291/

10-14 11:24
查看更多