字符串数组作为maven插件的命令行参数

tor*_*atn 18 command-line maven-2 arguments maven-plugin

我正在编写一个maven插件,其参数是String [].

像这样:

/**
* @parameter expression="${args}"
*/
protected String[] args;
Run Code Online (Sandbox Code Playgroud)

这可以通过POM使用,如下所示:

<args>
  <arg>arg1</arg>
  <arg>arg2</arg>
<args>
Run Code Online (Sandbox Code Playgroud)

但我想从命令行发送它

-Dargs={arg1, arg2}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Ric*_*ler 10

据我所知,你不能直接做到这一点,但接受一个分隔的String并将其自己拆分成一个数组是很常见的做法.

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

以下是一些示例用法:

网站插件:

-Dlocales=enGB,frFR
Run Code Online (Sandbox Code Playgroud)

斯卡拉-插件:

-DaddArgs=arg1|arg2|arg3
Run Code Online (Sandbox Code Playgroud)

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

如果这听起来可能对您有用,请查看此答案,该答案描述如何在属性插件中使用外部描述符,或者这个答案与xml-maven-plugin类似.或者你可以看看assembly-plugin的想法.


小智 7

最新的maven(3.0.3)应该适用于:

-DaddArgs = ARG1,ARG2,ARG3