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

Maven命令行传入自定义变量无效,WAR包版本未替换求助

问题原因及解决方案

核心问题1:Maven属性引用语法错误

你在pom.xml的<build.version>里写了$build_version,这是Shell脚本的变量引用语法,Maven并不识别这种写法。Maven的变量引用格式是${变量名},而非$变量名。

核心问题2:命令行参数名与pom中属性名不匹配

pom里定义的属性是build.version(点分隔格式),但你命令行传的是build_version(下划线分隔),Maven对参数名的符号、格式严格匹配,两者无法自动转换。


修复步骤

1. 修改pom.xml的属性定义

将<build.version>的取值改为Maven支持的格式,建议设置默认版本(避免无参数时构建失败):

<properties>
    <java.version>11</java.version>
    <db.password>${db_pwd}</db.password> <!-- 若需通过命令行传递该参数,同样要改成${}格式 -->
    <email.key>${email_key}</email.key>
    <modo.api.token>${modo_api_token}</modo.api.token>
    <modo.auth.shared>${modo_auth_shared}</modo.auth.shared>
    <build.version>1.0.0-SNAPSHOT</build.version> <!-- 默认版本,可被命令行覆盖 -->
</properties>
<version>${build.version}</version>

2. 使用正确的命令行参数

将参数名的下划线改成点,匹配pom里的属性名:

mvn clean package -Dbuild.version=0.0.2-SNAPSHOT

完成以上修改后,构建生成的WAR包名称就会是预期的myapp-0.0.2-SNAPSHOT.war。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:42:32