gpt4 book ai didi

gradle 没有任务排序所以如何实现这一点

转载 作者:行者123 更新时间:2023-12-04 03:05:27 24 4
gpt4 key购买 nike

所以如果我们有一个 drop db 任务和一个 create db 任务以及一个 start server 任务和一个 runqtest 任务,我们想要

  1. 有独立的任务,所以我可以自己调用 gradle dropdb(或其他人)
  2. 让 runqtest 依赖于 dropdb、createdb、populatedb、startserver

上面的数字 2 显然需要订购或将中断,并且 gradle 不像 ant 那样遵守任何顺序。如何做到这一点? (我在这篇文章中阅读了很多关于此的内容

http://markmail.org/thread/wn6ifkng6k7os4qn#query:+page:1+mid:hxibzgim5yjdxl7q+state:results

虽然一个用户是错误的,但当你有 1. e 依赖于 c 和 d 2. c 取决于 b,a 3. d 依赖于 a,b

因为 e 决定 c 将是第一个,构建将运行 b,a,c,d 所以它是完全确定的。我确实同意,如果您有订单,尽管像 ant 一样,并行化构建要困难得多,因为您不能只并行运行 c 和 d,因为订单很重要(而且从用户的角度来看更糟,大多数情况都无关紧要时间)。

如果他们能添加一个dependsOnOrdered,这样我们就可以在绝对必要时进行订购。

或者有谁知道我们应该怎么做?这个问题是在 2009 年针对 gradle 提出的!!!!我仍然没有在 gradle 中看到有关如何在需要时执行已订购的内容的文档。

院长

最佳答案

这是一种解决方案:

if (gradle.startParameter.taskNames.contains("qatest") {
qatest.dependsOn startServer
startServer.dependsOn populatedb
populatedb.dependsOn createdb
createdb.dependson dropdb
}

这种方法的局限性在于,它仅在 qatest 是命令行提供的初始任务的一部分时才有效。有时这已经足够了,您可以添加检查以确保用户不会出错。

如果您更频繁地需要此功能,您可以添加一个小帮助方法,以便更轻松地声明此类工作流。 workflow(qatest, dropdb, createdb,populatedb, startserver) 之类的东西。

另一种方法是创建任务的“克隆”,并在克隆之间添加任务依赖项(仅)。同样,您可以将其隐藏在一些抽象后面。例如,createWorkflowTask("startServer") { ... } 可以创建和配置 startServerstartServerWorkflow 任务。

综上所述,Gradle 的可编程性使得克服“工作流”在 Gradle 中还不是一流概念的问题成为可能。

关于gradle 没有任务排序所以如何实现这一点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14565131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com