确定任务是否在外部 build.gradle 文件中定义

2024-03-26

我有一个在运行时创建的 gradle 任务,用于调用另一个任务(“myOtherTask”),该任务位于单独的 gradle 文件中。问题是如果其他任务不存在,则会抛出异常。在尝试调用任务之前,是否可以检查外部 gradle 文件中是否存在该任务?

Example:

  task mainTaskBlah(dependsOn: ':setupThings')
    task setupThings(){
    //...
    createMyOtherTask(/*...*/)
    //...
}
def createMyOtherTask(projName, appGradleDir) {
    def taskName = projName + 'blahTest'
    task "$taskName"(type: GradleBuild) {
        buildFile = appGradleDir + '/build.gradle'
        dir = appGradleDir
        tasks = ['myOtherTask']
    }
    mainTaskBlah.dependsOn "$taskName"
}

您可以检查任务是否存在。例如,如果我们想模拟这一点,我们可以通过命令行属性触发任务创建

apply plugin: "groovy"

group = 'com.jbirdvegas.q41227870'
version = '0.1'

repositories {
    jcenter()
}

dependencies {
    compile localGroovy()
}

// if user supplied our parameter (superman) then add the task
// simulates if the project has or doesn't have the task
if (project.hasProperty('superman')) {
    // create task like normal
    project.tasks.create('superman', GradleBuild) {
        println "SUPERMAN!!!!"
        buildFile = project.projectDir.absolutePath + '/build.gradle'
        dir = project.projectDir.absolutePath
        tasks = ['myOtherTask']
    }
}

// check if the task we are interested in exists on the current project
if (project.tasks.findByName('superman')) {
    // task superman exists here we do whatever work we need to do
    // when the task is present
    def supermanTask = project.tasks.findByName('superman')
    project.tasks.findByName('classes').dependsOn supermanTask
} else {
    // here we do the work needed if the task is missing
    println "Superman not yet added"
}

然后我们可以很容易地看到这两个用例

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

确定任务是否在外部 build.gradle 文件中定义 的相关文章

随机推荐

  • 在 pandas 中添加时间戳偏移量

    我有一个数据框 df 当我运行 print df index 时 我得到 DatetimeIndex 2011 08 05 00 00 00 04 00 2011 08 05 01 00 00 04 00 2011 08 05 02 00
  • Rake on Rails 3 问题

    我将 Rails 2 3 应用程序移至 Rails 3 该应用程序实际上运行得很好 但我对 rake 任务有问题 看起来环境文件中的配置未正确初始化 我得到的错误是 rake aborted undefined method cache c
  • 从源代码构建 Android 时如何查看实际的 gcc 选项?

    我正在尝试调试我的 android 源构建环境 Android mk 文件 默认情况下 make 系统在构建过程中不显示 gcc 命令行 实现这一点的最佳方法是什么 对于提出请求的人来说可能为时已晚 但对于其他提出请求的人来说可能已经太晚了
  • 如何使用返回键关闭 UITextView 的键盘?

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 In IB s library the introduction tells us that when the return
  • sqrt(1.0 - pow(1.0,2)) 返回 -nan [重复]

    这个问题在这里已经有答案了 我发现了一个有趣的浮点问题 我必须在代码中计算几个平方根 表达式如下 sqrt 1 0 pow pos 2 其中 pos 循环从 1 0 到 1 0 1 0 对于 pow 来说很好 但是当 pos 1 0 时 我
  • 为什么递归 grep 显示“没有这样的文件或目录”错误?

    我正在 grep 本地 svn 目录 当我跑步时grep r pattern 我收到一些错误 例如 grep Data test 没有这样的文件或目录 谁问的grep寻找不存在的文件 gt grep version grep GNU gre
  • Spark MLlib LDA,如何推断新的未见过文档的主题分布?

    我对使用 Spark MLlib 应用 LDA 主题建模感兴趣 我已经检查了代码和解释here http spark apache org docs latest mllib clustering html latent dirichlet
  • 内部模板类型 std::vector> 的函数模板重载或专门化

    如何实现内部模板类型的函数模板重载std vector
  • Typescript 中的“通用类型‘Feature’需要 1 个类型参数”是什么意思?

    我尝试在打字稿中使用 GeoJson 但编译器会抛出这两个变量的错误 Generic type Feature
  • C# 通用继承解决方法

    Example 我想要几个从 TextBox 或 RichTextBox 派生的专用文本框 它们都从 TextBoxBase 派生 class CommonFeatures
  • 删除标签并仅在条形图的工具提示中显示值

    我在用ChartJS http www chartjs org docs 用于创建图表的库 在工具提示中 我显示了我创建的数据集中的数据值 它适用于图表类型为doughnut 否则它不起作用 以防万一或bar or 水平条 charts 无
  • 从 CGImage 获取 RGB 像素数据

    我正在尝试从 CGImage 访问像素数据 我希望能够以整数形式访问 RGB 值 我想我已经接近这个代码了 UIImage theImage UIImage imageNamed rgb png CGImageRef cgImageRef
  • 多维缩放后如何获取特征值?

    我有兴趣查看执行多维缩放后的特征值 什么函数可以做到这一点 我看了看文档 http scikit learn org stable modules generated sklearn manifold MDS html sklearn ma
  • Qt Webengine 渲染到打印

    有没有办法使用 QtWebEngine 将 HTML SVG 渲染到打印机 PDF 和光栅图像 我们想从WebKit切换到WebEngine 因此使用WebKit的QWebView不再是一个选择 宣布 Qt Web Engine 将支持打印
  • 如何解决具有 3 个变量的背包问题?

    解决与背包问题相关的问题的最佳方法是什么 该问题有 3 个变量 例如 价值 重量和体积 尽可能的最大值 有最大重量和体积限制 我尝试过根据其值 重量 体积 使用定义的索引 但我相信这不会给我最好的解决方案 所以我进行了搜索 有些人建议使用动
  • Haskell 类似实例?

    我是 Haskell 的新手 所以我的问题可能很愚蠢 我想要一个功能 show2 Show a gt a gt String 这会返回show a对于任何a but a如果 a 是它本身String 我该如何实施 附 如果这个函数已经在某个
  • 用汇编语言更改 CS:IP

    怎么可以强行改变CS and IP都是汇编语言 ORG指令可用于更改的数量IP 但是你如何改变CS 基本上我想使用汇编来实现多线程 许多论坛 包括堆栈溢出中的一个问题都说这是不可能的 但是即使 C 是由汇编代码制成的 它如何具有多线程选项呢
  • Spring中列表到页面的转换

    我正在尝试在春季将列表转换为页面 我已经使用它进行了转换 new PageImpl 用户 可分页 users size 但现在我在排序和分页本身方面遇到了问题 当我尝试传递大小和页面时 分页不起作用 这是我正在使用的代码 我的控制器 pub
  • CSS:将父级更改为子级的焦点

    假设你有类似的东西 div class parent div
  • 确定任务是否在外部 build.gradle 文件中定义

    我有一个在运行时创建的 gradle 任务 用于调用另一个任务 myOtherTask 该任务位于单独的 gradle 文件中 问题是如果其他任务不存在 则会抛出异常 在尝试调用任务之前 是否可以检查外部 gradle 文件中是否存在该任务