下面介绍可以在Mojo中作为参数使用的各种复合对象,及它们在POM中的解释规则。一般来说,保存参数值(和参数值中的元素)的对象的类型是按以下步骤决定的(确定有效类型的第一步):
- 1. 如果XML元素包含implementation属性,就使用它
- 2. 如果XML标签包含”.”,尝试解析为类的全名
- 3. 尝试将XML标签(首字母大写)解析为Mojo所在包中的类
- 4. 对数组,使用数组的元素类型(例如,对String[]参数使用String类型);对集合和映射,使用Mojo配置中指定的类;使用String作为集合类型的entry和map的值的类型。
一旦元素的类型确定了,xml中的文本将被转换为恰当的对象。
1、数组
数组参数通过多次指定来配置,例如:
/**
* My Array.
*/
@Parameter
private String[] myArray;
<myArray>
<param>value1</param>
<param>value2</param>
</myArray>
2、list类型
这一类包含所有实现java.util.Collection的类,如ArrayList或HashSet。这些参数也像数组一样通过多次指定来配置,例如:
/**
* My List.
*/
@Parameter
private List myList;
<myList>
<param>value1</param>
<param>value2</param>
</myList>
3、map类型
这一类包含所有实现java.util.Map而未实现java.util.Properties的类,如HashMap。这些参数通过包含XML标签来配置,形如<key>value</key>,例如:
/**
* My Map.
*/
@Parameter
private Map myMap;
<myMap>
<key1>value1</key1>
<key2>value2</key2>
</myMap>
4、Properties 类型
这一类包含所有实现java.util.Properties的映射。这些参数通过包含XML标签配置,形如<property><name>myName</name> <value>myValue</value> </property>,例如:
/**
* My Properties.
*/
@Parameter
private Properties myProperties;
<myProperties>
<property>
<name>propertyName1</name>
<value>propertyValue1</value>
<property>
<property>
<name>propertyName2</name>
<value>propertyValue2</value>
<property>
</myProperties>
5、自定义对象类型
这一类包含所有未实现java.util.Map、java.util.Collection和java.util.Dictionary的类。例如:
/**
* My Object.
*/
@Parameter
private MyObject myObject;
<myObject>
<myField>test</myField>
</myObject>
6、使用setters方法
当属性名和插件配置中实际的参数名不一致时,对参数对应的属性名的标记,这是用来告知Maven要使用的getter和setter。