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

Maven配置<activeByDefault/>的默认profile在其他自动激活profile存在时失效是否正常?

结论

这是Maven的预期设计,和profile激活规则的优先级有关。

具体规则说明

Maven中activeByDefault="true"的profile激活优先级是最低的:

  • 只要存在任意一个其他profile通过自动激活规则(比如你配置的JDK版本匹配、操作系统匹配、属性匹配等)被激活,或者有profile被手动通过-P命令行参数、settings.xml全局配置指定激活,所有标记了activeByDefault="true"的profile都会自动失效,不会被加载。

你当前的场景下,只要运行环境的JDK版本匹配java8或者java9的<jdk>激活范围,对应profile就会被自动激活,此时你的默认profile自然就不会生效。删除匹配的java profile后,没有其他自动激活的profile,默认profile就会恢复生效,完全符合Maven的设计逻辑。

解决方案

如果你需要active-by-default这个profile的配置始终生效,可以选择以下两种方案:

  • 直接将该profile内的<dependencies>等配置移出profile,放到pom.xml的顶级对应节点下,作为全局默认配置
  • 如果必须保留在profile中,可给该profile补充和另外两个java profile完全一致的<jdk>激活规则,这样同激活条件的多个profile会同时生效,不会互相覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:42:02