combine.self ="倍率"似乎不起作用

时间:2015-12-10 12:33:39

标签: maven

我在项目中使用父POM和子POM:

父POM:

<pluginManagement>  
    <plugins>
        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-xjc-plugin</artifactId>
            <executions>
                <execution>
                       ...
                    <configuration>
                           ...
                        <xsdOptions>
                            <xsdOption>
                                <extensionArgs>
                                    <extensionArg>-XNullable</extensionArg>
                                    <arg>-encoding</arg>
                                    <arg>UTF-8</arg>
                                </extensionArgs>
                            </xsdOption>
                        </xsdOptions>
                    </configuration>
                </execution>
            </executions>
        </plugin>
</pluginManagement>

我在子POM中的目标是删除<extensionArg>-XNullable</extensionArg>参数。

我使用combine.self="override"属性尝试了这个:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-xjc-plugin</artifactId>
            <configuration>
                <xsdOptions>
                    <xsdOption>
                        <extensionArgs combine.self="override">
                            <arg>-encoding</arg>
                            <arg>UTF-8</arg>
                        </extensionArgs>
                    </xsdOption>
                </xsdOptions>
            </configuration>
        </plugin>
    </plugins>
</build>

但这不起作用。有效的配置仍然是:

  <xsdOptions>
    <xsdOption>
      <extensionArgs combine.self="override">
        <extensionArg>-XNullable</extensionArg>
        <arg>-encoding</arg>
        <arg>UTF-8</arg>
      </extensionArgs>
    </xsdOption>
  </xsdOptions>

如何在Maven合并过程中如何从配置中删除<extensionArg>-XNullable</extensionArg>

Maven:3.3.3

1 个答案:

答案 0 :(得分:2)

在您的父POM中,您正在为插件的特定执行添加<extensionArg>-XNullable</extensionArg>(在<execution>标记元素内)。但是,在您的子POM中,您将覆盖常规配置(即,不是特定于任何执行的配置)。

因此,不会覆盖该特定执行的配置。您需要在特定执行中移动子POM中的插件配置。另一种可能性是将父POM的配置移动到常规配置而不是特定于执行的配置。