我正在使用一个(自定义的,内部开发的,细节在这里并不重要)Maven 插件,它需要一个名称列表,如下所示:
<configuration>
<names>
<name>Alice</name>
<name>Bob</name>
<name>Joe</name>
<name>Sally</name>
</names>
...
该列表硬编码在 POM 文件中。
我想要一些更动态的东西,这样我就可以使用用户定义的变量来指定单个名称。我可以这样做:
mvn clean package -Dname=Bob
<configuration>
<names>
<name>${name}</name>
</names>
问题是,到目前为止,我发现做到这一点的唯一方法是拥有两个具有重复插件配置的配置文件:一个具有预定义列表,另一个具有单个用户定义的值:
<profiles>
<profile>
<id>default</id>
...
<configuration>
<names>
<name>Alice</name>
<name>Bob</name>
<name>Joe</name>
<name>Sally</name>
</names>
...
</profile>
<profile>
<id>single-value</id>
<activation>
<property>
<name>name</name>
</property>
</activation>
...
<configuration>
<names>
<name>${name}</name>
</names>
...
</profile>
</profiles>
这可行,但我的问题是,两个配置文件对于这个插件都有几乎完全相同的配置(而且它们也是相当冗长的配置),除了名称列表。 p>
我想做的是让 Maven 属性包含一个列表,而不是单个值。像这样的事情:
<project>
<properties>
<names>
<name>bob</name>
</names>
</properties>
...
这样我的单值
配置文件将简单地重新定义names
属性。但当然,这并不容易实现:上面的代码示例会产生不可解析的 POM 错误。
有什么方法可以用其他 Maven 插件或技巧来做我想做的事情吗?
最佳答案
使用采用逗号分隔值的参数。在您的代码中,将此字符串转换为字符串列表。您真的应该想知道您是否希望通过命令行设置它,或者仅在插件配置中完成它是否足够。当然后者是优选的。 举个小例子:参见http://maven.apache.org/plugins/maven-site-plugin/site-mojo.html#locales
关于引用列表的 Maven 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24170098/