【问题标题】:Can i call a gradle task from a groovy method in a .gradle file?我可以从 .gradle 文件中的 groovy 方法调用 gradle 任务吗?
【发布时间】:2013-08-13 08:23:40
【问题描述】:

我在 gradle 中有一个非常规的构建脚本,可以循环编译项目。 更改为标准 gradle 构建需要数周时间,所以现在不会发生这种情况。

问题是我想停止在我的脚本中使用 ant 并且只使用 groovy + gradle。 问题是如何更改复制之类的任务?替换正则表达式?解压? 我假设在标准 gradle 插件和 java 插件中我有我需要的大部分内容,但它们都是任务,现在如果我的主要任务中有一个需要复制操作的方法,我该怎么做? 有没有办法调用任务代码?有没有办法从 groovy 脚本调用任务本身?

【问题讨论】:

    标签: groovy gradle task


    【解决方案1】:

    首先,你应该永远从另一个任务中调用一个任务 - 如果你这样做会发生不好的事情。相反,您应该声明两个任务之间的关系(dependsOnmustRunAfterfinalizedBy)。

    在某些情况下(比人们相信的要少),链接任务可能不够灵活;因此,对于某些任务(例如Copy),提供了等效方法(例如project.copy)。但是,应谨慎使用这些方法。在许多情况下,任务是更好的选择,因为它们是 Gradle 的基本构建块并提供许多优势(例如自动更新检查)。

    有时使用GradleBuild 任务也很有意义,它允许将一个构建作为另一个构建的一部分执行。

    【讨论】:

    • 好的,我知道 :-) 我知道我们目前有一个来自 ant 的进口,这是蹩脚的,需要时间来修复......但如果我读到你的正确地说,我可以调用 project.copy(params...) 来激活复制等。?我可以使用 ant.copy() 但我尽量避免依赖 ant...
    • 您可以使用project.copy(在回答了为什么您不能使用Copy 任务之后),但这并不是适用于所有类型任务的通用功能。请参阅Gradle Build Language Reference 中的Project,了解哪些方法可用。使用 Ant 任务总是好的。
    • GradleBuild 是我一直在寻找的,从我当前的脚本中调用另一个 gradle 脚本。 docs.gradle.org/current/dsl/…
    猜你喜欢
    • 2020-04-06
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多