在我的博客文章《 从Ant Build演变Gradle构建:导入Ant构建文件》中 ,我演示了如何使用Gradle内置的基于AntBuilder的Ant支持在Gradle构建中导入Ant目标。 然后,可以将这些Ant目标作为Gradle任务进行访问,并与Gradle构建直接引入的任务相同。 在本文中,我将研究使用Groovy区分基于导入的Ant目标的Gradle任务和Gradle定义的任务。

由摇篮进口Ant构建文件建立在我的例子中的这个帖子在我的介绍以前的帖子 。 该Ant构建文件包括目标“ -init”,“ clean”,“ compile”,“ jar”,“ javadoc”,“ all”和“ output”。 紧随build.xml及其Ant目标的Gradle构建脚本文件。

build-ant-targets-and-gradle-tasks.gradle(版本1)

// build-ant-targets-and-gradle-tasks.gradle
//
// Gradle build script demonstrating Gradle Tasks associated with this project
// that are not provided by an imported Ant build file.// ant is a DefaultAntBuilder instance
ant.importBuild 'build.xml'def antTargetsNames = ant.references.get("ant.targets").collect{ it.name }
println "\nAnt Targets: ${antTargetsNames}\n"def taskNames = rootProject.tasks.collect{ it.name }
println "\nGradle Task Names: ${taskNames}\n"def tasksThatAreNotAntTargets = taskNames - antTargetsNames
println "\nGradle Tasks that are NOT Ant Targets: ${tasksThatAreNotAntTargets}\n"

隐式可用的“ ant”变量( 默认为AntBuilder )首先用于通过调用ant.references.get("ant.targets")来获取所有Ant提供的目标。 Groovy方便的Collection.collect(Closure)方法在该集合上调用,以返回Ant目标“名称”的集合。

隐式可用的“ rootProject”还可以用于使用rootProject.tasks在根项目级别获取任务。 此集合上使用了相同的Groovy Collection.collect(Closure)方法来获取Gradle任务的名称。 最后,Groovy的减法运算符用于轻松确定哪些Gradle Tasks不是Ant Targets。 如上所示运行时,所有Gradle任务都是Ant目标,因此减法运算符不返回任何内容。 这显示在下一个屏幕快照中。

为了使示例更有趣,我在上面显示的G​​radle构建文件中添加了几个Gradle引入的Tasks。 接下来显示具有两个新的Gradle引入的任务的新版本。

build-ant-targets-and-gradle-tasks.gradle(版本2)

// build-ant-targets-and-gradle-tasks.gradle
//
// Gradle build script demonstrating Gradle Tasks associated with this project
// that are not provided by an imported Ant build file.// ant is a DefaultAntBuilder instance
ant.importBuild 'build.xml'task(helloWorld) << {println "Hello, World!"
}task(currentDateTime) << {println new Date()
}def antTargetsNames = ant.references.get("ant.targets").collect{ it.name }
println "\nAnt Targets: ${antTargetsNames}\n"def taskNames = rootProject.tasks.collect{ it.name }
println "\nGradle Task Names: ${taskNames}\n"def tasksThatAreNotAntTargets = taskNames - antTargetsNames
println "\nGradle Tasks that are NOT Ant Targets: ${tasksThatAreNotAntTargets}\n"

Gradle构建脚本的修订版引入了两个自己的任务(“ helloWorld”和“ currentDateTime”)。 运行此脚本的输出包括这两个新的Gradle任务,这是不是Ant引入的基于目标的Gradle任务的Gradle任务。 接下来显示此输出。

这篇文章中的示例提供了其他示例,这些示例能够使用Groovy代码更好地理解Gradle构建的优势。 可以直接访问默认的Ant Builder实例(“ ant”)和“ rootProject”以获取所有基于Ant的Gradle任务以及所有任务(基于Ant或Gradle引入)的名称。

参考:在Inspired by Actual Events博客上,与我们的JCG合作伙伴 Dustin Marx 区别了基于Ant目标的Gradle任务 。

翻译自: https://www.javacodegeeks.com/2014/01/differentiating-ant-target-based-gradle-tasks.html

区分基于Ant目标的Gradle任务相关推荐

  1. gradle ant_区分基于Ant目标的Gradle任务

    gradle ant 在我的博客文章< 从Ant Build演变Gradle构建:导入Ant构建文件>中 ,我演示了如何使用Gradle内置的基于AntBuilder的Ant支持在Grad ...

  2. 从Ant Build演进Gradle Build:导入Ant Build文件

    在大型项目上更改构建系统可能很困难并且需要大量工作. 幸运的是,对于那些将Ant版本迁移到Gradle版本的人,Gradle提供了特别方便的机制来促进这种迁移 . 由于Gradle基于Groovy构建 ...

  3. 【ISAR成像定标方法(1)—转台目标的RD成像算法MATLAB仿真】

    目录 前提介绍 ISAR成像基本流程 ISAR成像转台模型与回波建模 转台模型 发射信号与回波信号分析 转台目标RD成像算法 转台目标RD成像的仿真实验与分析 结语 前提介绍  ISAR成像定标方法的 ...

  4. MO-LTR:基于单目RGB视频的多目标定位、跟踪与重建

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:MO-LTR: Multiple Object Localization, Tracking a ...

  5. 基于单目图像无监督学习的深度图生成

    原文首发于微信公众号「3D视觉工坊」:基于单目图像无监督学习的深度图生成 如图1所示,网络的输入只需左相机图像,在训练阶段通过左右相机图像作为监督.注意,这里的无监督学习指的是,不需要深度图作为监督, ...

  6. React 基于ant design Pro 4 实现的一个分页, 自定义页码颜色

    标题目录 代码 样式 前言 这是在 Ant Design Pro 4 中基于 ant design 的 Pagination 分页组件的基础上开发的. 有这么一个需求, 页码的颜色基于该页是否有差异, ...

  7. 干货:明确数据分析目标的 3 个步骤,很多人还搞不清楚

    在电影<银河补习班>中,邓超饰演的马浩文对他的儿子说: 人生就像射箭,梦想就像箭靶子. 如果连箭靶子也找不到的话,你每天拉弓有什么意义? 对于数据分析工作而言,如果没有目标,不仅工作结果可 ...

  8. 明确数据分析目标的 3 个步骤!

    在电影<银河补习班>中,邓超饰演的马浩文对他的儿子说: 人生就像射箭,梦想就像箭靶子. 如果连箭靶子也找不到的话,你每天拉弓有什么意义? 对于数据分析工作而言,如果没有目标,不仅工作结果可 ...

  9. 基于Ant Design和jQuery UI的表单设计器

    基于Ant Design 和jQuery UI 的表单设计器 GitHub 地址 概念 Comonent 组件 Layout 布局,一种特殊的Component Component Editor 组件 ...

最新文章

  1. OpenGL渲染水water
  2. C#发送Email邮件方法总结
  3. Java Set集合
  4. Oracle实例和Oracle数据库(Oracle体系结构)
  5. 二叉树的创建_大多数人都不会手写创建并遍历二叉树,一航这里帮你终结了
  6. python 三引号_Python 简明教程 --- 4,Python 变量与基本数据类型
  7. 自定义控件(视图)2期笔记03:自定义控件之使用系统控件(优酷案例之广告条Viewpager)...
  8. Linux无root权限安装cuda9.1和cudnn7.05以及编译框架时无lcuda.so的问题
  9. java读取bny_java转义字符
  10. POJ3080 ZOJ2784 UVALive3628 Blue Jeans题解
  11. python数值运算代码_Python数值
  12. c语言数组转指针,(转)c语言指针数组
  13. NCI和CNC应用中M代码的概念和功能
  14. python输出姓名_Python简单生成随机姓名的方法示例
  15. 2019杭州上城区公办小学学区划分
  16. supersu二进制更新安装失败_Supersu提示更新二进制文件解决方案
  17. 如何动手搭建一套简单的直播系统
  18. 医院陪诊小程序怎么开发-医院陪诊小程序源码功能
  19. ApplicationAware
  20. MRI脑影像分析——根据脑图谱获取感兴趣区域mask,以海马体与丘脑为例(matlab+nilearn+nibabel+REST1.8)

热门文章

  1. grub shell 错误_使用grub-install修复Grub时出错
  2. poi动态创建文档_POI创建的文档具有不同条件的灵活样式
  3. activemq 性能测试_ActiveMQ性能测试
  4. 航空订票系统界面java_Java命令行界面(第21部分):航空公司2
  5. 私有方法与静态私有方法_每个私有静态方法都是新类的候选人
  6. dynamodb容器使用_使用DynamoDBMapper插入DynamoDB项目
  7. log4j2 xsd_Log4j 2.x XSD的描述不完整
  8. jconsole查看连接数_在JConsole和VisualVM中查看DiagnosticCommandMBean
  9. java8返回单个号码_如何在单个API中支持Java 6、8、9
  10. matchers依赖_Hamcrest Matchers的高级创建