You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven如何为相同execution id的插件执行生成有效配置?

Maven 插件 execution 下 goals 节点合并规则和普通 configuration 节点不同,这是你看到两个goal共存的核心原因:

  • 普通集合类配置节点(比如<includes>)默认的合并策略是子节点覆盖父节点的同名字段:如果子POM配置了和父POM同名的集合节点,父节点的内容会被完全替换,所以你看到合并后的<includes>仅保留了子POM的AA。
  • 同一id的<execution>下的<goals>节点默认合并策略是追加而非覆盖:Maven通过execution的id匹配父子POM中的插件执行项,当id完全一致时才会合并配置,且子POM配置的goal会追加到父POM的goal列表后,不会直接替换父POM的内容,所以合并后同时存在check和sort两个goal。如果execution id不同,会被识别为两个独立的执行项,不会合并。

如果需要让子POM的goal完全覆盖父POM的配置,只需要在子POM的<goals>节点添加combine.self="override"属性即可,示例如下:

<executions>
    <execution>
        <id>the_same_id</id>
        <phase>process-test-classes</phase>
        <goals combine.self="override">
            <goal>check</goal>
        </goals>
    </execution>
</executions>

你观察到的其他合并表现都符合Maven默认规则:execution的phase、普通单值配置项默认子POM配置覆盖父POM,子POM未配置的单值项会继承父POM配置,所以phase从父POM的process-sources变成了子POM的process-test-classes,<lineEnding>从父POM继承了LF配置,<includes>被子POM的配置完全替换。

内容的提问来源于stack exchange,提问作者Piotr Michalczyk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:00:04