【问题标题】:Pass special characters to Maven Mojo Map key将特殊字符传递给 Maven Mojo Map 键
【发布时间】:2021-02-12 14:42:37
【问题描述】:

我的 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>

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

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

<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 插件(不破坏现有客户端)?

【问题讨论】:

    标签: xml maven pom.xml maven-plugin maven-mojo


    【解决方案1】:

    解决方法是使用java.util.Properties:

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

    这样在xml中指定可以有2种方式:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-26
      • 2017-06-14
      • 2011-12-23
      • 1970-01-01
      • 2019-06-14
      相关资源
      最近更新 更多