在 Gradle 中定义不依赖的任务顺序?

2024-02-07

Question

当两个任务都被执行时,我能否以某种方式确保一个任务将在另一个任务之前/之后执行?我don't想要在它们之间添加始终存在的依赖关系。

背景

我有两项任务,一项任务启动服务器,另一项任务对其运行测试。启动该服务器的任务在一个新进程中运行它,所以我可以运行gradle startServer runServerTests。由于启动服务器需要一些时间,因此必须可以使用一个 gradle 进程启动服务器,然后使用另一个 gradle 进程多次运行测试。

现在,我尝试创建一个任务来执行 CI 环境执行的所有操作,其中包括启动服务器和运行服务器测试。我显然想确保在运行测试之前启动服务器,但到目前为止我运气不佳。

Attempts

我的第一次尝试如下,但由于定义的依赖项的顺序,这不起作用无法保证 http://issues.gradle.org/browse/GRADLE-427:

task doItAll(dependsOn: [startServer, runServerTests]) { ... }

我的第二次尝试,调用任务在行动中 http://gradle.1045684.n5.nabble.com/Running-a-task-after-execution-of-another-task-td4405504.html不起作用并且不支持 http://gradle.1045684.n5.nabble.com/1-0-m-7-Gradle-idea-task-fails-with-lock-exception-td5123405.html:

task doItAll() << {
  tasks.startServer.execute()
  tasks.runServerTests.execute()
}

解决方案已在路线图上(等级-294 http://issues.gradle.org/browse/GRADLE-294, 初始化器/终结器 http://forums.gradle.org/gradle/topics/improving_tasks-19op1r),但这现在对我没有帮助。


目前它可能不会对你有太大帮助,但是我最近在这个领域提交了一个拉取请求,并且暗示它应该进入 1.6(他们目前正在发布 1.5 并且 PR 没有进入该版本) - 请参阅讨论here http://gradle.1045684.n5.nabble.com/Must-run-after-ordering-td5710924.html。你最好的选择是等待拉取请求 https://github.com/gradle/gradle/pull/134在 1.5 版本发布后合并到 master 中,然后获取第一个可用的夜间构建here http://www.gradle.org/nightly.

EDIT

Gradle 1.6 已经发布了一段时间,现在你可以简单地使用mustRunAfter为了实现这一点。看Gradle 手册中有关任务排序的部分 http://www.gradle.org/docs/current/userguide/more_about_tasks.html#sec%3aordering_tasks了解详情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Gradle 中定义不依赖的任务顺序? 的相关文章

随机推荐

  • Ruby 数组 concat 与 + 速度?

    我对 Ruby 数组进行了小型性能测试concat vs 操作和concat 太快了 然而我不清楚为什么concat 有那么快吗 有人可以帮忙吗 这是我使用的代码 t Time now ar for i in 1 10000 ar ar 4
  • 如何将场景缩放至全屏?

    我目前正在学习 Phaser 3 但是 我能找到的所有文档都是关于 Phaser2 的 创建游戏时 您必须在配置中设置宽度和高度 var config type Phaser AUTO width 800 height 600 如何将场景缩
  • 我在微风中未映射的属性似乎不适用于投影

    我有以下实体 public class Invoice Key public int Id get set public DateTime ArchiveDate get set public DateTime ClotureDate ge
  • 从不同路径使用 .babelrc

    有没有办法向 babel cli 提供 babelrc 文件的路径 就像是 babel src out dir lib config random folder sub folder babelrc 您可以将 babelrc 文件放在其他
  • SpriteKit/Metal 内存泄漏但没有任何反应

    我似乎无法追踪内存泄漏 Instruments 看到它 并将其报告为 jet buffer Metal 但我不知道这具体指向什么 它经常发生 我已经尝试了一切 删除我的所有节点 删除物理主体 但它似乎仍然存在 我在更新或任何其他游戏周期方法
  • 是否有一个 JavaScript 引擎可以让我运行我的代码而不必被迫使用浏览器?

    有没有什么方法可以编写和运行 JavaScript 代码 而无需运行浏览器并使用其 JavaScript 引擎 Thanks 我很惊讶还没有人指出这一点 Windows 包含一个可以从命令行使用的 Javascript 引擎 自 Windo
  • 如何让 gitlab-ci-runner DinD 图像缓存中间图像?

    我有一个 Dockerfile 从安装 texlive full 包开始 该包很大并且需要很长时间 如果我docker build它在本地 安装后创建的中间映像会被缓存 后续构建速度很快 但是 如果我推送到我自己的 GitLab 安装并且
  • android listview onItemClickListener 失败

    我使用以下代码来侦听我的列表视图 onItemClick 事件 没有发生编译错误 当我点击任何列表项时什么也没有发生 我不知道为什么Orz 有人能告诉我为什么 吗 mp3 listView setOnItemClickListener ne
  • 填充 NSString 不起作用

    我已阅读该内容以向左填充NSString你需要做的就是这样 NSString paddedStr NSString stringWithFormat 20 20 20 20 aString anotherSting 但是 那是行不通的 我不
  • SwiftUI 中可选数据类型的选择器?

    通常我可以在 SwiftUI 中显示这样的项目列表 enum Fruit case apple case orange case banana struct FruitView View State private var fruit Fr
  • 让 nokogiri 使用较新版本的 libxml2

    我一直试图在我的计算机 Mountain Lion 上安装 Nokogiri 以与 rspec 和 capybara 一起使用 但对于我来说 我无法让它正常运行 据我所知 问题在于 nokogiri 使用了错误版本的 libxml2 到目前
  • 如何在android中以编程方式打开文件夹?

    我正在开发一个打开文件夹的Android应用程序 我的问题是如何在 Android 中以编程方式打开文件夹 我尝试了 stack overflow 中提供的所有解决方案并在 Google 中搜索 但找不到解决方案 有人可以给我答案吗 提前致
  • Wifi 睡眠,即使有锁

    总结 即使获取了wifi锁 当手机使用电池运行时 wifi也会在一段时间后断开 我已将问题简化为带有启动线程的按钮的单个活动 它只是向 PC 上运行的回显服务器发送 100 000 个字符串 每 100 毫秒一个字符串 请参阅下面的代码 我
  • 在 JavaScript 中从表格单元格获取值...而不是 jQuery

    我不敢相信这花了我多长时间 但当我使用 JavaScript 迭代表格时 我似乎无法弄清楚如何从 HTML 表格中提取单元格值 我正在使用以下内容进行迭代 var refTab document getElementById ddRefer
  • Android (Lollipop) EditText onFocus 多次触发

    我有几个带有 onFocusChangeListener 的 EditText When the field gains or loses focus txtMinimumValue setOnFocusChangeListener new
  • 可以在C++中使用正则表达式吗?

    重复 C 中有一个使用模式匹配 使用正则表达式 的函数吗 https stackoverflow com questions 329517 there is a function to use pattern matching using
  • 将函数动态应用到 Postgres 表中的所有列

    使用 Postgres 13 1 我想对表的所有列应用前向填充函数 前向填充函数在我之前的问题中进行了解释 如何将前向填充作为 PL PGSQL 函数 https stackoverflow com questions 70987689 h
  • 创建应用程序域并加载程序集

    我想创建一个具有默认权限的应用程序域 并以默认权限将程序集加载到应用程序域中 并执行程序集中的方法 你可以看看以下文章 http msdn microsoft com en us library ms173139 aspx在 MSDN 上
  • F#,在不使用临时变量的情况下通过管道转发匹配情况

    我想在不使用临时变量或 lambda 的情况下将变量通过管道转发到匹配情况 想法 let temp x gt Function1 gt Function2 Many functions later gt FunctionN let resu
  • 在 Gradle 中定义不依赖的任务顺序?

    Question 当两个任务都被执行时 我能否以某种方式确保一个任务将在另一个任务之前 之后执行 我don t想要在它们之间添加始终存在的依赖关系 背景 我有两项任务 一项任务启动服务器 另一项任务对其运行测试 启动该服务器的任务在一个新进