如the documentation所述,Gradle使用有向无环图(DAG)来构建依赖图。根据我的理解,具有单独的评估和执行周期是构建工具的主要特征。例如Gradle doc表示这可以实现一些本来不可能的功能。
我对能够说明此功能强大功能的真实示例感兴趣。依赖图重要的一些用例是什么?我对这个领域的个人故事特别感兴趣,无论是使用Gradle还是使用类似的工具。
我从一开始就制作这个“社区维基”,因为很难评估“正确”的答案。
答案 0 :(得分:6)
答案 1 :(得分:3)
example from the same documentation说明了这种方法的强大功能:
正如我们稍后详细描述的那样 (参见第30章,构建生命周期) Gradle有一个配置阶段和 执行阶段。之后 配置阶段Gradle知道所有 应该执行的任务。摇篮 为您提供一个钩子来利用它 信息。一个用例就是这样 检查发布任务是否正确 要执行的部分任务。 根据这个你可以分配 某些变量的值不同。
换句话说,您可以尽早挂钩构建过程,以便根据需要更改其过程。如果已经执行了一些实际的构建工作,那么改变可能为时已晚。
答案 2 :(得分:1)
我现在正在评估不同的构建系统,并且使用gradle我设法添加丑陋的代码,枚举所有类型'jar'的任务并更改它们,以便每个jar清单包含'Build-Number'属性(稍后使用)撰写最终文件名):
gradle.taskGraph.whenReady {
taskGraph ->
taskGraph.getAllTasks().findAll {
it instanceof org.gradle.api.tasks.bundling.Jar
}.each {
it.getManifest().getAttributes().put('Build-Number', project.buildVersion.buildNumber)
}
}