我需要使用自定义的类型,例如, LunarDate
,在我的魔对象:
class MyMojo extends AbstractMojo {
/** @parameter */
LunarDate lunarDate;
}
我想配置参数<configuration>
在pom.xml的部分。
<configuration>
<lunarDate>丁丑年二月初四</lunarDate>
</configuration>
(类型LunarDate
仅仅是一个例子来说明的问题)
我已经举行的类型转换器,但如何让他们?
DefaultBeanConfigurator
负责使用DefaultConverterLookup
,并直接对其进行实例化,而无需使用丛集装箱。
我你可能想复制和修改它的新建扩建,而是通过注册您的副本@Component(role=BeanConfigurator.class)
可能没有任何效果; 我试图从创建扩展在过去的更换标准的Maven组件和Maven的开发被告知,这是不可能的。
你可以查找默认BeanConfigurator
和使用反射来获取其ConverterLookup converterLookup
场,然后调用registerConverter
与您的自定义转换器,但是这将是脆弱的。
也许最好是干脆放弃,声明你的Mojo参数是类型的String
,并执行转换明确地execute
。
对于较新的Maven(与Maven 3.3.1测试)现在可以子类BasicComponentConfigurator
访问DefaultConverterLookup
作为成员变量:
@Component(role = ComponentConfigurator.class, hint = "basic")
public class ExtendedComponentRegistrator
extends BasicComponentConfigurator
implements Initializable {
@Override
public void initialize() throws InitializationException {
converterLookup.registerConverter(new MyCustomConverter());
}
}
然后在pom.xml使神经元数据的产生:
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-metadata</artifactId>
<executions>
<execution>
<goals>
<goal>generate-metadata</goal>
</goals>
</execution>
</executions>
</plugin>