通过系统属性为插件指定值列表的方式取决于插件的最新程度。
但是,如果您正在处理正确实施的最新插件,那么为插件指定值数组的正确方法是通过逗号分隔的字符串。
这是一个参考:
http://blog.sonatype.com/2011/03/configuring-plugin-goals-in-maven-3/
这是引用的引用:
对于许多插件参数,有时可以方便地指定
通过系统属性从命令行获取它们的值。在过去,
这仅限于简单类型的参数,如字符串或布尔值。
最新的 Maven 版本终于允许插件用户配置
通过逗号分隔的命令行中的集合或数组
字符串。以这样的插件参数为例:
再进一步,我们可以看看更具体的例子。
考虑一下 Wildfly maven 插件。
此插件有一个已弃用的配置属性,称为:
jvmArgs。
这应该作为空格分隔的值列表传入。
众所周知,在命令行中,摆弄空格并不可爱。
因此,如果我们在插件 mojo 代码中查看此参数的定义,您会发现类似这样的内容(这里有另一个引用)。
/**
* A space delimited list of JVM arguments.
*
* @deprecated use {@link #javaOpts}
*/
@Parameter(alias = "jvm-args", property = PropertyNames.JVM_ARGS)
@Deprecated
private String jvmArgs;
所以这是旧的做事方式。
现在,如果您使用的是此插件的最新版本(例如 Alpha6)。
然后源代码将有一个不错的新字段,称为 javaOpts。
让我们看看该字段在代码中的样子。
/**
* The JVM options to use.
*/
@Parameter(alias = "java-opts", property = PropertyNames.JAVA_OPTS)
private String[] javaOpts;
所以我们看到在 StartMojo 中有一个不错的数组字段。
此数组字段已正确注释。
并且 maven 引擎将完成将值设置到 Mojo 中的繁重工作。
当您想通过命令行将数据泵入此字段时,您可以在批处理文件中指定以下形式的内容:
-Dwildfly.javaOpts="-Xmx1536M,-Xms1536M,-XX:MaxMetaspaceSize=512M,-XX:-HeapDumpOnOutOfMemoryError"
如果您尝试使用 sapces 而不是 commans 来做同样的事情。
我会告诉你会发生什么:
[INFO] 独立服务器正在启动。最大堆大小无效:
-Xmx1536M -XX:MaxMetaspaceSize=512m -XX:-HeapDumpOnOutOfMemoryError
所以你看,当它吞下我的系统属性时,它没有进行字符串拆分。因此 Wildfly 尝试设置 jvm 内存设置,就好像最大内存是那个完整的字符串一样。
另一方面,当我使用逗号分隔时,Mojo 得到了适当的丰富,我可以在应用服务器启动时控制它的内存设置。
当然,您希望使用系统属性而不是 pom.xml XML 配置来执行诸如设置 Jenkins 作业之类的任务。使用系统属性,您会更加灵活。
就是这样。