我在 gradle 中有一个非常规的构建脚本,可以循环编译项目。更改为标准 gradle 构建需要数周时间,所以现在不会发生这种情况。
问题是我想停止在我的脚本中使用 ant 并且只使用 groovy + gradle。问题是如何更改复制之类的任务?替换正则表达式?解压?我假设在标准 gradle 插件和 java 插件中我有大部分我需要的东西,但它们都是任务,现在如果我的主要任务中有一个需要复制操作的方法,我该怎么做?有没有办法调用任务代码?有没有办法从 groovy 脚本中调用任务本身?
首先,你永远不应该从另一个任务中调用一个任务——如果你这样做会发生坏事。相反,您应该声明两个任务之间的关系 ( dependsOn
, mustRunAfter
, finalizedBy
)。
在某些情况下(比人们相信的要少),链接任务可能不够灵活;因此,对于某些任务(例如Copy
),提供了等效的方法(例如project.copy
)。但是,应谨慎使用这些方法。在许多情况下,任务是更好的选择,因为它们是 Gradle 的基本构建块并提供许多优势(例如自动更新检查)。
有时使用任务也很有意义GradleBuild
,它允许将一个构建作为另一个构建的一部分执行。