博客《Ant—使用Ant构建一个简单的Java项目(一)》演示了使用Ant工具构建简单的Java项目,接着这个样例来进一步学习Ant:

上面样例须要运行多条ant命令才干运行Test类中的main函数,能不能简化须要运行命令呢?答案是肯定的,能够将build.xml文件里的脚本改成以下的脚本:

<?

xml version="1.0" encoding="UTF-8"?>
<project name="test" default="run-Test" basedir="."> <property name="src" value="src"/>
<property name="lib" value="build/lib"/>
<property name="dest" value="build/classes"/>
<property name="np_jar" value="build/lib/test.jar"/> <target name="create-path">
<mkdir dir="${dest}"/>
<mkdir dir="${lib}"/>
</target> <target name="create-class" depends="create-path">
<javac srcdir="${src}" destdir="${dest}"/>
</target> <target name="create-jar" depends="create-class">
<jar destfile="${np_jar}" basedir="${dest}">
<manifest>
<attribute name="Main-Class" value="Test"/>
</manifest>
</jar>
</target> <target name="run-Test" depends="create-jar">
<java classname="Test" classpath="${np_jar}"/>
</target> <target name="clean">
<delete file="${np_jar}"/>
<delete dir="${dest}"/>
<delete dir="${lib}"/>
</target>
</project>

这时仅仅需运行ant命令就能够操作完毕须要依次运行“ant create-path”、“ant create-class”、“ant create-jar” 和“ant run-Test”命令才干完毕的操作,那么它是如何做到的呢?

a、因为project标签default属性定义的值为run-Test,所以当直接运行ant命令时ant会首先运行name为run-Test的target;

b、因为name为run-Test的target中的depends属性指向name为create-jar的target,所以会先运行name为create-jar的target;

c、因为name为create-jar的target中的depends属性指向name为create-class的target。所以会先运行name为create-class的target;

d、因为name为create-class的target中的depends属性指向name为create-path的target,所以会先运行name为create-path的target。

e、因为name为create-path的target没有depends属性。所以ant命令终于先运行该target。

由此可见。此时单独运行ant命令事实上就是依次运行了“ant create-path”、“ant create-class”、“ant create-jar” 和“ant run-Test”命令。

DOS窗体单独运行ant命令的结果例如以下图:

版权声明:本文博客原创文章。博客,未经同意,不得转载。

最新文章

  1. react.js
  2. vim 使用说明
  3. CentOS 6.5 生产环境编译安装LNMP
  4. Mysql5.5命令行修改密码
  5. 深入理解计算机系统第二版习题解答CSAPP 2.16
  6. 基于avalon1.4.x ----分页组件编写
  7. Spring学习之杂七杂八
  8. 【面经】腾讯和YY实习生面试总结
  9. QA: 自闭合标签要不要手动闭合?
  10. 高通ASOC中的machine驱动
  11. 豆瓣爬虫小记(lowB版)
  12. python爬取中国天气网站数据并对其进行数据可视化
  13. C博客作业05--指针
  14. 使用 Mutex 实现进程间同步
  15. AI学习---回归和聚类算法
  16. jQuery获取地址栏中的链接参数
  17. NodeJs第3方包说明
  18. oracle 日常
  19. Qt大小端
  20. 【Anaconda】windows安装报错:UnicodeDecodeError解决方法

热门文章

  1. Windows7-32位系统下R语言链接mySQL数据库步骤
  2. css3-9 css中的浮动怎么使用
  3. RocketMQ 安装详细说明
  4. 【34.88%】【codeforces 569C】Primes or Palindromes?
  5. [Typescript] Generics using TypeScript
  6. &amp;lt;LeetCode OJ&amp;gt; 62. / 63. Unique Paths(I / II)
  7. 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(8)枚举、补码
  8. ### Hibernate中的事务与并发 ###
  9. Tools:downloading and Building EDK II工具篇:安装/使用EDKII源代码获取/编译工具[2.3]
  10. js进阶 10-10 可见伪类选择器和内容伪类选择器的作用