在 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 中定义不依赖的任务顺序? 的相关文章

  • 使用 Gradle 检测 IDE 环境

    无论如何 有没有办法检测我正在运行我的项目的环境 像这样的事情 构建 gradle def usingIntelliJ def usingAndroidStudio if usingIntelliJ buildConfigField Str
  • 只能加载NetBeans中的一些gradle项目

    非常类似于 无法在 NetBeans 中加载 gradle 项目 https stackoverflow com q 17698135 262852但我认为并不完全相同 即使只是因为这个问题的年龄 我看到了 gradle 消息after h
  • 如何在构建持续时间和 RAM 使用方面优化 gradle 构建性能?

    我目前正在为我的多模块 Web 应用程序从 ant 切换到 gradle 目前看来当前版本的 Gradle M9 可能已经达到了极限 但也许 希望 这只是我对 Gradle 概念理解不够好或者不知道 神奇的性能提升开关 的问题 我很高兴收到
  • JaCoCo 具有微服务项目架构?

    我的项目由 6 个 Java 微服务组成 我试图弄清楚如何将 Jacoco 的 html 报告合并到一份整体覆盖率报告中 就目前情况而言 我最终为每项服务提供了一份报告 如果能有一份汇总报告就好了 这样我就可以更轻松地将其放入我们的 CI
  • 如何在 Gradle 中使用 if else 条件

    有人可以告诉我如何在 gradle 脚本中编写 if else 条件吗 我的意思是我有两种不同类型的 zip 文件 一种是 LiceseGenerator 4 0 0 58 另一种是 CLI 4 0 0 60 我的部署脚本工作正常 但我使用
  • MissingDimensionStrategy 无处不在 - 有没有更好的方法?

    我有一个图书馆项目 让我们称之为lib1有定制的flavorDimensions指定的 更准确地说有buld尺寸与实际口味full and production 该库被另一个库项目使用 lib2 没有自定义flavorDimensions指
  • 如何在gradle中为ant xjc任务指定多个绑定文件

    我在 gradle 项目中有多个绑定 xjb 文件 为 xsd C xsd 生成 JAXB 类时 我想使用之前为 A xjb 和 B xjb 生成的绑定文件 因为 C xsd 引用 A xsd 和 B xsd 如果我在同一路径中没有任何其他
  • 如何将 Buildship 与现有 Gradle 项目结合使用

    我的 Eclipse 工作区中有几个项目使用 Gradle 作为构建系统 到目前为止 我正在从命令行运行 Gradle 命令 我安装了 Buildship 以便从 Gradle 任务 视图更方便地运行 Gradle 任务 但 Buildsh
  • fastlane 找不到 gradlew 文件?

    尝试为我的 Android 项目启动并运行 fastlane 我的项目目录中有 fastfile 和 appfile 但是当我的 Lane 执行 gradle 操作时 它失败并出现以下错误 在路径 Users MyUser Document
  • 无法从 Android studio 生成签名的 APK“任务‘:packageRelease’执行失败”

    我正在使用 Android Studio 1 2 2 并尝试使用 proguard 设置生成 APK 但我无法做到这一点并收到以下错误消息 任务 packageRelease 执行失败 无法计算 Users Documents projec
  • JsInterop“com 未定义”

    尝试使用 JsInterop 与每个 Javascript 的 LibGDX 项目进行通信 我正在关注 将 Java 类型导出到 JavaScript 示例here http www gwtproject org doc latest De
  • Spotbugs 在 gradle 项目中排除过滤器

    我是 gradle 新手 正在尝试配置 Spotbugs 我已将该插件添加到 build gradle 中 并且出现了 Spotbugs 问题 不过 我想排除 Findbugs EI EXPOSE REP 和 EI EXPOSE REP2
  • Gradle:从另一个插件添加插件依赖项

    我正在创建 gradle 自定义插件 我的任务之一需要确保另一个插件应用于同一项目 因为它将在其之上运行 我希望我的插件的用户避免设置对另一个插件的显式依赖 我想在我的插件中执行此操作 所以 我想要这个插件 https plugins gr
  • gradlew:appengineEnhance 失败

    我正在使用 Java 创建移动后端Google App Engine with Android Studio 为了启动公开我的 API 的本地服务器 我使用gradlew module name appengineRun 然而 当我去htt
  • Android gradle 无法找到方法 'org.grade.api.internal.file.DefaultSourceDirectorySet'

    我尝试将 java 类转换为 Kotlin 除了出现以下错误之外 它工作正常 我尝试重新下载下面建议的所有依赖项 但无济于事 请帮助我解决此错误 Error Error 2 0 Unable to find method org gradl
  • AndroidStudio/gradle找不到javax.persistence包

    在尝试执行以下教程时 https cloud google com developers articles how to build mobile app with app engine backend tutorial https clo
  • Gradle Javadoc 失败并显示“错误:包...不存在”

    为我们开发的库构建 Android Studio 项目的 Javadocs 时 我们的 Gradle 构建脚本失败 出现以下错误 MY LOCAL PATH MyClass java 5 错误 包 com google gson 不存在 导
  • 具有共享日志配置的 Gradle 多项目

    是否有一种标准方法可以在 gradle 项目布局中的所有子项目之间共享日志记录配置 例如 log4j 或 logback 我现在做的就是复制一份logback xml or log4j properties in src main reso
  • 尝试在 Android 上使用 FFMPEG。编译但是还是不行

    首先 我尝试使用 ffmpeg 将图像数组编译成 Android 上的视频 我已经遵循了各种在线教程 并且已经能够编译 Android 的库 但仍然需要项目运行 我现在使用的存储库可以在这里找到 https github com Batte
  • 如何找出每个包含的库的最低 api 级别

    我的项目中包含了很多库 Android Studio 2 0 Preview 4 我想找出它们每个的最低 Android SDK 级别 是否可以不用谷歌搜索每个图书馆的信息 如果您有源形式的库 例如 作为项目中的库模块 请查看其清单 如果您

随机推荐

  • 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想要在它们之间添加始终存在的依赖关系 背景 我有两项任务 一项任务启动服务器 另一项任务对其运行测试 启动该服务器的任务在一个新进