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

YAML格式Maven POM配置maven-enforcer-plugin失败求助

解决Takari Polyglot YAML中maven-enforcer-plugin banTransitiveDependencies无includes/excludes的配置问题

当你在Takari Polyglot的YAML格式POM里配置maven-enforcer-plugin的banTransitiveDependencies规则时,如果完全省略includes和excludes,Maven会因为无法解析Mojo配置而报错——这是因为该规则的配置模型期望这两个字段有明确的结构,哪怕是空的。

解决办法是显式声明空的数组来表示没有包含或排除项,这样既符合插件的配置要求,又能达到你“不设置任何includes/excludes”的需求(此时规则会默认禁止所有传递依赖)。

下面是完整的YAML POM配置示例片段:

build:
  plugins:
    - groupId: org.apache.maven.plugins
      artifactId: maven-enforcer-plugin
      version: 3.0.0-M1
      executions:
        - id: enforce-ban-transitive-deps
          goals:
            - enforce
          configuration:
            rules:
              banTransitiveDependencies:
                includes: []  # 空数组表示没有要包含的依赖(即全部禁止)
                excludes: []  # 空数组表示没有要排除的依赖

为什么要这么做?

banTransitiveDependencies规则的配置类(BanTransitiveDependencies)中,includes和excludes字段被定义为集合类型,Maven的配置解析器需要明确知道这些字段的结构。如果直接省略,解析器无法确定它们是未设置还是为空,从而抛出配置解析错误。通过显式设置为空数组,你告诉插件:“我确实没有指定任何包含或排除的依赖”。

额外说明

如果你其实是想允许所有传递依赖,那这个规则本身就不适合你——banTransitiveDependencies的作用是禁止传递依赖,空的includes意味着禁止所有传递依赖。如果你的需求相反,应该移除这个规则,或者调整其他enforcer规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:11:41