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

从Ant执行带参数的Gradle命令报错:任务'iT --tests ...'未找到

解决Ant执行Gradle命令时参数传递错误的问题

你遇到的问题核心是Ant的<exec>任务不会自动拆分单个<arg>标签里的空格分隔内容,导致Gradle把一整串字符串当成了一个任务名称,自然找不到对应的iT --tests com.mygrailsapp.geb.**任务。

问题原因分析

在命令行直接执行./gradlew iT --tests com.mygrailsapp.geb.** -Dgeb.env=firefox -Dgrails.server.port.http=8090时,Shell会自动把空格分隔的内容拆分成多个独立的命令行参数传递给Gradle;但在Ant的<exec>里,如果你把多个参数写到同一个<arg value="..."/>中,Ant会将这整串内容作为单个参数传递,Gradle就会把它识别成一个任务名,而非iT任务加上后续的参数。

正确的写法

你需要把每个参数拆分成单独的<arg>标签,每个标签对应一个命令行参数:

<property name="gradlew" value="./gradlew"/>
<target name="test-functional" description="run functional tests">
    <antcall target="init"/>
    <antcall target="compile"/>
    <echo>Running functional tests...</echo>
    <exec executable="${gradlew}" failonerror="true">
        <arg value="iT"/>
        <arg value="--tests"/>
        <arg value="com.mygrailsapp.geb.**"/>
        <arg value="-Dgeb.env=firefox"/>
        <arg value="-Dgrails.server.port.http=8090"/>
    </exec>
</target>

这样Ant会把每个<arg>的内容作为独立参数传递给Gradle,和你在命令行执行的效果完全一致,就能正常运行指定的Geb功能测试了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:46:14