微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将特殊字符传递给Maven Mojo Map键

如何解决将特殊字符传递给Maven Mojo Map键

我的Maven MOJO插件中具有以下属性

@Mojo(name = "generate",defaultPhase = LifecyclePhase.GENERATE_SOURCES,threadSafe = true)
public class GraphQLCodegenMojo extends AbstractMojo {
    @Parameter
    private Map<String,String> customTypesMapping;
}

我通常以以下方式设置(基于Maven guide):

<customTypesMapping>
     <DateTime>java.util.Date</DateTime>
</customTypesMapping>

现在,我想允许插件用户提供特殊字符作为地图

我尝试了不同的方法,但是它们都不起作用:

<customTypesMapping>
    <DateTime!>java.util.Date</DateTime!>
    <DateTime&#33;>java.util.Date</DateTime&#33;>
    <customTypeMapping>
        <name>DateTime</key>
        <value>java.util.Date</value>
    </customTypeMapping>
</customTypeMapping>

是否存在向后兼容的方式来更改我的Maven插件不破坏现有客户端)?

解决方法

解决方案是使用java.util.Properties

@Mojo(name = "generate",defaultPhase = LifecyclePhase.GENERATE_SOURCES,threadSafe = true)
public class GraphQLCodegenMojo extends AbstractMojo {
    @Parameter
    private Properties customTypesMapping = new Properties();

通过这种方式,可以通过两种方式在xml中进行指定:

<customTypesMapping>
    <property>
        <!--note the special character below-->
        <name>Date!</name>
        <value>java.util.Date</value>
    </property>
</customTypesMapping>

并以向后兼容的方式,使该插件的现有用户无需更改其配置:

<customTypesMapping>
    <DateTime>java.util.Date</DateTime>
</customTypesMapping>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。