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
相关产品推荐
相关产品推荐

