0

我在以可管理的方式组织构建时遇到问题。在我的 gradle 构建中有大量任务,因为对于每个特定的工作元素,gradle 都需要该类型的任务。例如:复制文件 gradle 需要 Copy 任务类型,压缩文件 gradle 需要 Zip 任务类型,删除少量文件 gradle 需要 Delete 任务类型。Javadoc 、 Jar 、 Ear 等也需要它们的任务类型。最终构建有大量任务,并以我必须使用的特定顺序运行所有这些

taskA.mustRunAfter taskB

将这些规则应用于所有任务会使构建更加难以管理。有没有办法在一个任务中对所有这些工作元素(即复制文件、zip 文件、创建 jar 和 javadoc 等)进行编程(如 ant 中提供的)

4

1 回答 1

2

你不使用有什么原因dependsOn吗?您需要指定更多语句mustRunAfter才能实现相同的排序dependsOn。至少,这是我的经验。仅mustRunAfter在您有明确不是依赖项的排序问题时使用。

例如,我们使用 gradle 来安装和卸载测试环境。如果两者都运行而不是install.mustRunAfter uninstall(进行刷新),但显然 install 实际上并不总是依赖于卸载,所以我们使用mustRunAfter.

也就是说,在一个任务中运行多个元素的一种方法是使用一系列 ant 目标。

task lotsOfStuffAtOnce {
    ext.paulaProp = 'brillant'
} << {
    ant.copy ...
    ant.zip ...
    ant.jar ...
}

我仍然认为总体上首选的理念是使用适当组合的任务dependsOnmustRunAfter,但是不同的情况需要不同的结果,所以我该判断谁?如果您希望将几个步骤全部作为一个工作单元(一项任务)完成,那么上面的代码是我能想到的最简洁的方式。

如果你没有从 gradle 调用 ant 的经验,用户文档会告诉你这是一个非常机械的转换。

于 2013-06-18T14:39:45.877 回答