GitHub Actions中Windows PowerShell执行Maven命令报语法错误排查
问题排查:GitHub Actions Windows PowerShell下Maven构建语法错误
在GitHub Actions的Windows(PowerShell)环境执行Maven构建时,出现The syntax of the command is incorrect错误,相关原代码如下:
$args - > "-Dkeystore.filename=E:\LOCAL.Public.p12" "-nsu" "-Djavax.net.ssl.keyStore=NONE" "-Djavax.net.ssl.keyStoreType=Window" "-D javax.net.ssl.trustStore=NUL" "-Djavax.net.ssl.trustStoreType=Windows" "-DMULE_LOG_BASE=E:\log" mvn clean package -s "Devops-Framework\config\mvn_settings.xml" "-Dserver.username=${{inputs.JFROG_USER}}" "-Dserver.password=${{inputs.JFROG_APIKEY}}" $args
错误点分析:
- 变量赋值语法错误:
$args - >是无效的PowerShell赋值写法,PowerShell中数组赋值需用@(...)结构,->会被解析为非法命令,直接触发语法错误。 - 参数格式错误:
"-D javax.net.ssl.trustStore=NUL"中-D与参数名之间存在空格,Maven无法识别该参数格式,导致命令解析失败。 - 参数拼写错误:
"-Djavax.net.ssl.keyStoreType=Window"少了末尾的s,应为Windows,虽不直接引发当前语法错误,但会导致后续运行时SSL配置失效。 - 数组传递问题:PowerShell中直接使用
$args传递数组参数可能出现解析异常,需用@args展开数组,确保每个参数被独立传递。
修正后的代码:
# 正确定义Maven参数数组 $mavenArgs = @( "-Dkeystore.filename=E:\LOCAL.Public.p12", "-nsu", "-Djavax.net.ssl.keyStore=NONE", "-Djavax.net.ssl.keyStoreType=Windows", "-Djavax.net.ssl.trustStore=NUL", "-Djavax.net.ssl.trustStoreType=Windows", "-DMULE_LOG_BASE=E:\log" ) # 使用@args展开数组传递参数 mvn clean package -s "Devops-Framework\config\mvn_settings.xml" "-Dserver.username=${{inputs.JFROG_USER}}" "-Dserver.password=${{inputs.JFROG_APIKEY}}" @mavenArgs
内容的提问来源于stack exchange,提问作者wehelpdox
相关产品推荐
相关产品推荐

