我正在编写一个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/