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

远程Jenkins节点执行Ant构建任务时遇语法错误求助

远程Jenkins Agent执行Ant任务报错:文件名、目录名或卷标语法不正确

环境信息

  • Jenkins版本:2.406
  • 控制器节点:Java 11本地节点
  • 构建节点:Windows远程agent

构建控制台输出

Started by upstream project "master" build number 61
originally caused by:
 Started by remote host 127.0.0.1
Running as SYSTEM
[EnvInject] - Loading node environment variables.
[EnvInject] - Preparing an environment for the build.
[EnvInject] - Keeping Jenkins system variables.
[EnvInject] - Keeping Jenkins build variables.
[EnvInject] - Injecting contributions.
Building remotely on agent_android in workspace C:\Java\Jenkins_Slave\.jenkins_android\workspace
Restoring workspace from build #61 of project retrieve_local
[workspace] $ cmd.exe /C "C:\Java\Jenkins_Slave\apache-ant-1.10.13\bin\ant.bat -l basic_ant2.log && exit %%ERRORLEVEL%%"
**The filename, directory name, or volume label syntax is incorrect.**
Build step 'Invoke Ant' marked build as failure
Archiving artifacts
Finished: FAILURE

已尝试的解决方案

  • 在控制器本地节点执行相同Ant任务,运行正常
  • 通过Windows批处理任务执行相同Ant命令,运行正常
  • 切换Ant工具为"Default"版本,出现其他错误
  • 使用仅输出hello world的简易build.xml,排除构建文件本身问题

失败任务的XML配置

<?xml version='1.1' encoding='UTF-8'?>
<project>
  <actions/>
  <description></description>
  <keepDependencies>false</keepDependencies>
  <properties>
    <jenkins.model.BuildDiscarderProperty>
      <strategy class="hudson.tasks.LogRotator">
        <daysToKeep>-1</daysToKeep>
        <numToKeep>3</numToKeep>
        <artifactDaysToKeep>-1</artifactDaysToKeep>
        <artifactNumToKeep>1</artifactNumToKeep>
      </strategy>
    </jenkins.model.BuildDiscarderProperty>
    <EnvInjectJobProperty plugin="envinject@2.901.v0038b_6471582">
      <info>
        <propertiesFilePath>$WORKSPACE/../../VersionInfo.txt</propertiesFilePath>
        <secureGroovyScript plugin="script-security@1244.ve463715a_f89c">
          <script></script>
          <sandbox>false</sandbox>
        </secureGroovyScript>
        <loadFilesFromMaster>false</loadFilesFromMaster>
      </info>
      <on>true</on>
      <keepJenkinsSystemVariables>true</keepJenkinsSystemVariables>
      <keepBuildVariables>true</keepBuildVariables>
      <overrideBuildParameters>false</overrideBuildParameters>
    </EnvInjectJobProperty>
  </properties>
  <scm class="hudson.plugins.cloneworkspace.CloneWorkspaceSCM" plugin="clone-workspace-scm@84.v147686859e1c">
    <parentJobName>retrieve_local</parentJobName>
    <criteria>Any</criteria>
  </scm>
  <assignedNode>agent_android</assignedNode>
  <canRoam>false</canRoam>
  <disabled>false</disabled>
  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
  <triggers/>
  <concurrentBuild>false</concurrentBuild>
  <customWorkspace>workspace</customWorkspace>
  <builders>
    <hudson.tasks.Ant plugin="ant@487.vd79d090d4ea_e">
      <targets>custombuild -l build_android.log</targets>
      <antName>bundledAnt</antName>
      <buildFile>shell\platforms\android\build.xml</buildFile>
    </hudson.tasks.Ant>
  </builders>
  <publishers>
    <hudson.tasks.ArtifactArchiver>
      <artifacts>shell\platforms\android\bin\EdgeHybrid-release.apk, shell\platforms\android\bin\EdgeHybrid-release.aab, shell\platforms\android\build_android.log, resources\offline\html\js\cordova\cordova_plugins_android.js, cordovaPlugins.zip</artifacts>
      <allowEmptyArchive>false</allowEmptyArchive>
      <onlyIfSuccessful>false</onlyIfSuccessful>
      <fingerprint>false</fingerprint>
      <defaultExcludes>true</defaultExcludes>
      <caseSensitive>true</caseSensitive>
      <followSymlinks>true</followSymlinks>
    </hudson.tasks.ArtifactArchiver>
  </publishers>
  <buildWrappers>
    <EnvInjectBuildWrapper plugin="envinject@2.901.v0038b_6471582">
      <info>
        <propertiesFilePath>$WORKSPACE/build.conf</propertiesFilePath>
        <secureGroovyScript plugin="script-security@1244.ve463715a_f89c">
          <script></script>
          <sandbox>false</sandbox>
        </secureGroovyScript>
        <loadFilesFromMaster>false</loadFilesFromMaster>
      </info>
    </EnvInjectBuildWrapper>
    <hudson.plugins.build__timeout.BuildTimeoutWrapper plugin="build-timeout@1.30">
      <strategy class="hudson.plugins.build_timeout.impl.AbsoluteTimeOutStrategy">
        <timeoutMinutes>10</timeoutMinutes>
      </strategy>
      <operationList>
        <hudson.plugins.build__timeout.operations.AbortOperation/>
      </operationList>
    </hudson.plugins.build__timeout.BuildTimeoutWrapper>
  </buildWrappers>
</project>

排查与解决建议

  1. 修正Ant参数配置
    从XML配置看,-l build_android.log是Ant的全局日志参数,不应放在targets字段中。打开Jenkins任务配置,找到Ant构建步骤的Advanced选项,在Arguments中填写-l build_android.log,targets仅保留custombuild。

  2. 验证Agent端Ant路径有效性
    远程登录agent节点,打开cmd执行以下命令测试:

    C:\Java\Jenkins_Slave\apache-ant-1.10.13\bin\ant.bat -l basic_ant2.log
    

    检查是否能正常执行,若报错则排查Ant路径权限、文件完整性。

  3. 排查路径长度与特殊字符
    Windows默认路径长度限制为260字符,检查workspace路径C:\Java\Jenkins_Slave\.jenkins_android\workspace加上后续构建文件路径是否超出限制,可尝试设置更短的自定义workspace路径测试。

  4. 检查EnvInject插件的环境变量
    查看$WORKSPACE/../../VersionInfo.txt和$WORKSPACE/build.conf中的内容,确认是否包含非法路径字符、空格或特殊变量,避免注入错误的环境变量导致路径解析异常。

  5. 确认Agent运行权限
    检查Jenkins agent服务的运行账号是否拥有Ant安装目录、workspace目录的读写权限,确保能创建日志文件和执行构建操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 04:30:18