从命令 lne 传入 maven 的用户定义变量值

Passing in a user-defined variable value for maven from the command lne

提问人:pbuchheit 提问时间:9/8/2023 更新时间:9/8/2023 访问量:23

问:

我正在开发一个构建脚本来使用 maven 编译 WAR。我希望能够在运行 maven 命令时从命令行传入某些值,例如版本号。经过一番研究,我发现您可以使用 -D 标志传入值。我以为我已经弄清楚了,但有些事情不太管用。我的 pom.xml 看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <packaging>war</packaging>
    <name>myapp</name>
    <description>This is an app</description>
    <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>$build_version</build.version>
    </properties>
    <version>${build.version}</version>
...

然后,我使用命令执行编译

mvn 清理软件包 -Dbuild_version=0.0.2-SNAPSHOT

由于某种原因,变量替换不起作用。我最终得到了一个名为 myapp-$build_version.war 而不是 myapp-0.0.2-SNAPSHOT.war 的 WAR 文件。我不太确定我在这里做错了什么。有什么建议吗?

Java Maven 变量 命令行

评论

2赞 Jorn 9/8/2023
我认为你需要把不${build_version}$build_version
0赞 NoDataFound 9/8/2023
这同样适用于其他属性(例如:不是)。${db_pwd}$db_pwd
0赞 pbuchheit 9/8/2023
@Jorn我认为你是对的。谢谢。

答: 暂无答案