0

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

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

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

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

4

1 回答 1

0

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

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

这样,可以通过2种方式在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>
于 2020-10-30T17:29:26.187 回答