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

如何使用maven help:evaluate非交互式串联多个Maven属性?

如何用maven-help-plugin非交互式拼接多个Maven属性输出

要实现非交互式拼接project.artifactId和project.version并输出,核心是确保Maven能收到完整的表达式,避免shell提前解析变量。以下是可行的解决方案:

正确命令

你可以用单引号包裹完整的Maven表达式(避免shell解析$符号),或者转义$符号:

方式1:用单引号包裹表达式(推荐)

mvn help:evaluate -Dexpression='${project.artifactId}-${project.version}' -q -DforceStdout

方式2:转义$符号(适用于必须用双引号的场景)

mvn help:evaluate -Dexpression="\${project.artifactId}-\${project.version}" -q -DforceStdout

执行后就能得到你想要的结果:maven-tests-0.0.3-SNAPSHOT

为什么之前的尝试失败?

我们来逐个分析你试过的方法问题所在:

  • 直接用${}包裹未转义:bash会把${project.artifactId}当作自己的环境变量解析,如果这个变量不存在,就会变成空字符串,导致Maven收到的表达式是-project.version(或更混乱的内容),自然返回错误。
  • 转义短横线:短横线是普通字符,不需要转义,这个操作反而会让Maven把\-当成表达式的一部分,导致解析失败。
  • 用"包裹短横线:"是HTML转义字符,Maven的表达式引擎不识别,会被当作普通字符串处理,导致表达式结构错误。

补充说明

maven-help-plugin 3.2.0完全支持这种表达式拼接,因为它的evaluate目标兼容完整的Maven表达式语言——不仅可以直接拼接变量,还能使用Maven的内置函数(比如字符串拼接函数),比如:

mvn help:evaluate -Dexpression='${project.artifactId.concat("-").concat(project.version)}' -q -DforceStdout

不过这种方式不如直接变量拼接直观,推荐第一种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:52:48