【问题标题】:Gradle can't execute an Ant targetGradle 无法执行 Ant 目标
【发布时间】:2013-07-01 23:33:54
【问题描述】:

我有一个 gradle 任务,它有一个dependsOn,然后需要执行一个名为 runcukes 的 Ant 任务。然而,Gradle 不会调用 ant 任务:

ant.importBuild 'build.xml'

task runCukes(dependsOn: restoreSchema) {
    runcukes
}

使用 -d 运行 gradle 表明 gradle 无法识别 Ant 目标 runcukes:

    Finished executing task ':restoreSchema'
17:28:37.506 [LIFECYCLE] [org.gradle.TaskExecutionLogger] :runCukes
17:28:37.506 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter                                                                    ]                                                                               
Starting to execute task ':runCukes'
    17:28:37.507 [INFO] [org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter                                                                     ]                                                                               
    Skipping task ':runCukes' as it has no actions.
    17:28:37.507 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter 

Gradle 无法识别它必须执行 ant 目标 runcukes。

gradle 文档没有显示任何复杂的任务,如具有一个 dependsOn 然后执行一个 ant 任务的任务。 (它们仅将“Hello World”示例显示为依赖项。)

在执行完一个dependsOn后,我需要做什么才能让Gradle执行一个Ant任务?

谢谢。

【问题讨论】:

    标签: ant gradle


    【解决方案1】:

    只是将 Ant 任务名称放入任务的配置块中不会执行它。如果我正确理解了您的要求,这应该可以满足您的要求:

    ant.importBuild 'build.xml'
    
    runcukes.dependsOn restoreSchema
    task runCukes(dependsOn: runcukes)
    

    【讨论】:

    • 这行得通。非常感谢。我不会从 Gradle 文档中弄清楚这一点。
    • @DeanSchulze 是的,我听到了 - 这里也是。一旦变得更加复杂,从 gradle 迁移到 ant 似乎是一场噩梦。在仔细查看 Benjamin 的代码后 - 是不是缺少大括号,或者这只是一种替代语法?
    • @Zainodis 不,在 Groovy 中 - 如果方法至少有一个参数,则在调用该方法时括号是可选的。
    • @BenjaminMuschko 感谢您的信息:)!几个小时以来一直在做 groovy - 嗯,不太喜欢它,但没有办法绕过它,考虑到 android studio 和所有。
    猜你喜欢
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    相关资源
    最近更新 更多