如果需要在一个构件文件中通过Ant命令去执行另一个Ant项目,或者说要执行本项目的子项目的构件文件。这时Ant这个核心任务就派上用场了。简单地说Ant任务的作用就相当于在命令行通过Ant命令执行构件文件。值得注意的是Ant任务依赖于target元素,需要在某个target元素中使用,不能在target元素外独立使用。

Ant任务还可以实现类似Java程序间的继承关系,不过对于这个核心任务来说只继承property元素和reference属性。举个例子说,项目A中包含通过Ant任务去执行的项目B,而项目B中需要用到项目A中的属性C,那么可以通过设置的Ant任务中的inheritAll属性,使得在B项目中可以使用项目A中的属性C。从另一方面看,这也符合XP(极限)编程中的细分功能的思想,可以把大的项目切分为几分小项目,然后通过Ant工具进行整合。

项目结构:

project

-build.xml

-build1.xml

-build2.xml

-build3.xml

-file.properties

build.xml:

  1. <?xml version="1.0"?>
  2. <project default="run" basedir="." name="MyProject">
  3. <property file="user.properties"/>
  4. <target name="run">
  5. <ant antfile="${file1}" dir="." output="file1.log" target="call"/>
  6. <ant antfile="${file2}" dir="." />
  7. <ant antfile="${file3}" dir="." />
  8. </target>
  9. </project>

build1.xml

  1. <?xml version="1.0"?>
  2. <project default="init" basedir="." name="MyProject1">
  3. <target name="init">
  4. <echo message="This is in Project1's init target."/>
  5. </target>
  6. <target name="call">
  7. <echo message="The call in Project1"/>
  8. </target>
  9. </project>

build2.xml

  1. <?xml version="1.0"?>
  2. <project default="call" basedir="." name="MyProject2">
  3. <target name="init">
  4. <echo message="This is in Project2's init target."/>
  5. </target>
  6. <target name="call" depends="init">
  7. <echo message="The call in Project2"/>
  8. </target>
  9. </project>

build3.xml

  1. <?xml version="1.0"?>
  2. <project default="call" basedir="." name="MyProject3">
  3. <target name="init">
  4. <echo message="This is in Project3's init target."/>
  5. </target>
  6. <target name="call">
  7. <echo message="The call in Project3"/>
  8. </target>
  9. </project>

file.properties

  1. file1=build1.xml
  2. file2=build2.xml
  3. file3=build3.xml

运行结果:

  1. Buildfile: C:\hxw\workspace\hibernate\build.xml
  2. run:
  3. call:
  4. [echo] The call in Project1
  5. init:
  6. [echo] This is in Project2's init target.
  7. call:
  8. [echo] The call in Project2
  9. call:
  10. [echo] The call in Project3
  11. BUILD SUCCESSFUL
  12. Total time: 78 milliseconds

转载于:https://blog.51cto.com/hongxuwei/649384

ant 执行多个构建文件相关推荐

  1. ant学习笔记之(ant执行命令的详细参数和Ant自带的系统属性)

    2019独角兽企业重金招聘Python工程师标准>>> 一:ant执行命令的详细参数 -buildfile<file>,-file<file>,-f<f ...

  2. [Ant自动打包]ant执行命令的详细参数和Ant自带的系统属性

    转自:http://hi.baidu.com/yuanzhifeng/item/75d03d11e9b2010eb88a1a6d?qq-pf-to=pcqq.c2c ant学习笔记之(ant执行命令的 ...

  3. Ant 构建文件的一种写法

    BuildDesEncryptor.xml <project name="DesEncryptor" default="execute.class" ba ...

  4. expect脚本同步文件、 expect脚本指定host和要同步的文件 、 构建文件分发系统 、批量远程执行命令...

    为什么80%的码农都做不了架构师?>>>    20.31 expect脚本同步文件 使用expect脚本同步文件 说明:核心命令是rsync #! /usr/bin/expect ...

  5. expect脚本同步文件,expect脚本指定host和要同步的文件,构建文件分发系统,批量远程执行命令...

    2019独角兽企业重金招聘Python工程师标准>>> expect脚本同步文件 更改权限 执行脚本 查看执行结果 expect eof需要加上,作用是等脚本命令执行完再进行退出 e ...

  6. 使用 Ant 自动生成项目构建版本

    引言 对 于多版本项目,要提供新版本来跟上新功能或缺陷报告增加的速度,并同时仍然保持可接受的质量水平,可能是一项不小的挑战.构建自动化可确保准确性和消除人 为错误的可能性,从而部分地解决此问题.自动化 ...

  7. jmeter脚本结合ant执行测试用例并生成测试报告

    前言:本篇主要讲ant执行测试用例并生成测试报告,至于jmeter脚本本篇文章不多说,不懂的小伙伴可查看我的上篇文章:jmeter环境配置.使用以及参数化之CSV Data Set Config 1. ...

  8. bat脚本执行exe文件_将批处理(BAT)脚本转换为可执行(EXE)文件

    bat脚本执行exe文件 When you get down to it, batch files and executable files work pretty much the same way ...

  9. python多个for的执行顺序-python顺序执行多个py文件

    假如我要执行code目录下的python程序,假设该目录下有1.py,2.py,3.py,4.py四个文件,但是我想执行1.py,2.py,4.py,则可在该目录下创建一个python文件,代码如下: ...

最新文章

  1. R语言glm拟合logistic回归模型:模型评估(模型预测概率的分组密度图、混淆矩阵、准确率、精确度、召回率、ROC、AUC)、PRTPlot函数获取logistic模型最优阈值(改变阈值以优化)
  2. Chrome浏览器内部协议Chrome://收集
  3. java入门第六天课程_java基础第六天
  4. Mysql笔记-对left join使用的进一步认识(多表查询的正确使用及认识)
  5. C++ union 公共体
  6. lightclients将于4月27日主持召开EIP-3074社区会议
  7. java不同的包下相同的类名的问题与解决办法
  8. 从零玩转Webpack4+实现原理笔记(一)
  9. java selenium (十一) 操作弹出对话框
  10. Atitit SpringCache缓存使用 艾提拉 attilax总结 1. Spring的抽象已经做得够好了,适合于大多数场景,非常复杂的就需要自己AOP实现了。 1 1.1. 设置配置文件支持
  11. 计算机技术检索,计算机检索常用技术.ppt
  12. CAS4.0.0链接Redis4.0.6
  13. Data Matrix of Zint
  14. java 定时为每月10号_Java定时任务配置(Scheduled注解)
  15. 品胜WPR003N、WMB001N刷Openwrt
  16. 用深度学习做命名实体识别(五)-模型使用
  17. php倒序正序,php foreach正序倒序输出示例代码
  18. PS图层混合算法之二(线性加深,线性减淡,变亮,变暗)
  19. 膜拜,阿里内部都在学习的五大深入理解Java虚拟机PDF,简直强无敌
  20. 央行降息楼市应声而动:购房者出现恐慌苗头

热门文章

  1. 【discuz x3】源代码中的sql调用
  2. LightOj 1078 Basic Math
  3. emacs python debug_我常用的 Python 调试工具 - 博客 - 伯乐在线
  4. 线程其实就是一个个指令组成的,当这个线程内的指令全部执行完了,那么这个线程也就执行结束了
  5. 查看docker容器日志
  6. 后端:MyBatis缓存知识介绍
  7. 程序人生:摆脱情绪低潮的10种方法
  8. ASP.NET MVC中常用的ActionResult类型
  9. 403 forbidden_[SpringSecurity] 自定义403页面
  10. swift自行车品牌介绍_品牌101:简介