Gradle脚本内CMD exec执行块报错" was unexpected at this time.",求原因?
错误原因分析
核心触发原因
${dependenciesFile}对应的文件路径包含空格或特殊字符,直接拼接到CMD命令中时,CMD会将空格视为参数分隔符,破坏了原命令的括号/语法结构,导致解析时出现引号不匹配的错误,即"" was unexpected at this time。
辅助问题(加重解析错误)
- Gradle字符串转义不完整:CMD中的脱字符
^(用于转义重定向符>)在Gradle双引号字符串中需要二次转义(写成^^),否则Gradle会自动吃掉^,导致CMD收到的命令中2^>nul变成2>nul,虽然这部分不会直接触发当前报错,但会破坏原命令的错误抑制逻辑。 - 路径未加引号包裹:即使路径无空格,未用双引号包裹
${dependenciesFile}的情况下,CMD解析带括号的复合命令时也可能触发语法异常。
修正示例
将文件路径用双引号包裹,并修正转义:
exec { ignoreExitValue true executable "cmd" args "/c", "cd workspace/${project}/conf && @echo off && 2^^>nul (>>\"${dependenciesFile}\" echo off) && echo file is not locked || echo file is locked" }
内容的提问来源于stack exchange,提问作者RCB
相关产品推荐
相关产品推荐

