
Maven 3.9 起对 .mvn/maven.config 文件的解析规则进行了破坏性更新:每行仅允许一个参数,多参数需分行书写;原写法 --settings ./local-settings.xml 将报错,须拆分为两行且禁止尾随空格。
maven 3.9 起对 `.mvn/maven.config` 文件的解析规则进行了破坏性更新:每行仅允许一个参数,多参数需分行书写;原写法 `--settings ./local-settings.xml` 将报错,须拆分为两行且禁止尾随空格。
在 Maven 3.9.0 及更高版本中,Apache Maven 对 .mvn/maven.config 文件的解析逻辑发生了向后不兼容的重要变更(详见 MNG-7684 和 3.9.0 发布说明)。核心变化是:maven.config 中每一行被视为一个独立的 CLI 参数,不再支持在单行内以空格分隔多个 token(如选项与其值)。
这意味着以下旧式写法在 Maven 3.9+ 中将直接失败:
--settings ./.mvn/local-settings.xml
错误信息典型为:
Unable to parse maven.config file options: Unrecognized option: --settings ./.mvn/local-settings.xml
✅ 正确写法必须将选项与参数严格分行,且选项行末不得含任何空格或制表符:
--settings ./.mvn/local-settings.xml
⚠️ 注意事项:
- --settings 行末绝对不可有空格(例如 --settings ❌),否则 Maven 会将其视为无效选项;
- 该格式完全向下兼容:Maven 3.8.x 及更早版本同样能正确解析分行写法;
- 所有其他复合参数(如 --batch-mode, -DskipTests, --define prop=value)均需遵循相同规则——每个参数或键值对独占一行。
? 实际示例(.mvn/maven.config 完整推荐内容):
--settings ./.mvn/local-settings.xml --batch-mode -Dmaven.repo.local=./.m2/repository
此配置可确保 CI 环境(如 maven:3-amazoncorretto-17 镜像,其默认搭载 Maven 3.9+)稳定拉取私有仓库依赖,同时兼顾本地开发环境兼容性。建议所有使用 .mvn/maven.config 的项目立即检查并迁移配置格式,避免构建中断。










