写这篇博客是简介一下ant。这是一个Java的打包工具。很像是C的Makefile工具。不过是基于xml格式的,所以在语法上可能会更随意一点,不会像是Makefile一样困扰于严格缩进的问题。

ant学习起来其实很简单,一篇博客的内容就可以了。因为知识点就那么多。不过也像是Makefile,打包一个大工程也是很不好写的,都是要处理好依赖关系。废话少说,下面进入正题。

一:安装

这步,去ant.apache.org下载ant的二进制包(不要下载源码那个包,除非你想研究)。然后就想Java一样配置环境变量就ok了。环境变量指向bin目录。配置好了之后,就可以使用了。打开cmd,运行ant -version。

二:建立build.xml文件

这就是一个简单的ant文件。

<project default="hello">
<target name="hello">
<echo message="hello , ant">
</target>
</project>

保存为build.xml文件。在文件所在目录下执行:ant命令。会看到

$ ant
Buildfile: build.xmlhello:[echo] Hello, WorldBUILD SUCCESSFUL
Total time: 2 seconds

分析:从上面的例子中,我们可以看到。build.xml简单的有以下级别:

·project(project标签是build文件的根元素,可以包括一个或多个target,default属性是必须的,并且指明默认执行的target。因为ant命令无参数指定时会运行default target)

·target(这个在后面有更深入的讨论,这里只要知道target的name属性是必须的就好了)

·task(ant中的最小单元,一般就是执行一些命令了)

这个树形关系是最基本的build文件结构。

p.s.可以通过一些命令参数做一些事。比如下面这句会指定对echo.xml执行ant,同时指定goodbye为默认的target

ant -f echo.xml goodbye

三:开始,打包你的Java程序

先简单的对付一个文件。先写一个hello world的Java程序吧(这里不写,并且不要问我理由)。为了节约篇幅,这里不一步一步讲了,就直接把“编译-打包-运行”都做得一个build文件内容发上来。

<project default="compile"><target name="compile"><javac srcdir="." /></target><target name="jar" depends="compile"><jar destfile="hello.jar"basedir="."includes="**/*.class"<manifest><attribute name="Main-Class" value="hello" /></manifest>/></target><target name="run" depends="jar"><java classname="hello"classpath="hello.jar"fork="true"/></target>
</project>

分析一下,很好读懂。

1. 这个工程的默认执行是compile。这个target的task是执行javac命令(ant所支持的命令,后面的“java”也是)编译java文件。srcdir指定要编译的Java文件的所在位置。

2. 第二个target是jar,后面这个depend="compile"很关键。表明命令之间的以来关系(我们总不能不编译就打包或者运行吧)。注意一下,在jar任务里我还指定生成manifest文件(这是Java的配置文件,不明白的一查就会懂了)

3. 最后一个是run这个target,运行就是调用java命令就可以了,指定好相应的参数。这里熟悉java命令的同学应该很容易就明白了。另外,fork="true"表示请求用一个新的JVM运行。

运行一下,这里建议用命令ant run运行这个build文件。如果你指定了default="run",就直接ant就可以了。

然后我们可以验证一下,用这个命令java -jar hello.jar。看到了么?

四:深入,打包你的Java工程--使用ant的properties

还是先看内容:

<project default="all"><property name="obj-dir" location="obj" /><property name="lib-dir" location="lib" /><property name="src-dir" location="src" /><target name="init"><mkdir dir="${obj-dir}" /><mkdir dir="${lib-dir}" /></target><target name="clean-init"><delete dir="${obj-dir}" /><delete dir="${lib-dir}" /></target><target name="compile" depends="init"><javac srcdir="${src-dir}"destdir="${obj-dir}"/></target><target name="clean-compile"><delete><fileset dir="${obj-dir}" includes="**/*.class" /></delete></target><target name="jar" depends="compile"><jar destfile="${lib-dir}/hello.jar"basedir="${obj-dir}"/></target><target name="clean-jar"><delete file="${lib-dir}/hello.jar" /></target><target name="run" depends="jar"><java classname="hello"classpath="${lib-dir}/hello.jar"fork="true"/></target><target name="all" depends="run"/><target name="clean" depends="clean-init"/>
</project>

tips:读build文件,最好就要根据default指定的target,根据依赖关系倒序读。

分析一下,这个文件其实可以应对很多你的Java工程的(当然,这里我们忽略只有一个hello.java的事实)。温习一下,一个好的工程可以如下,一般都有obj、lib、src等有意义的目录。src目录存放源代码,obj存放编译好的代码(这里是.class),lib目录存放打包文件(生成的库)。感觉说了这些,上面的代码应该没什么问题了,需要注意的是,mkdir等标签其实调用的都是ant的命令。

执行一下ant,运行成功。当你发现你想干掉你的文件,ant clean。这就是这个build文件里的其它target了。

五:what's more?

就像是C的Makefile一样。ant也支持一些更复杂的操作,比如条件语句。这些一般用来写你的测试(test)任务,像上一小节的clean任务似的,这样你的工程看起来更加健壮。

更好的使用ant来测试是使用Junit。不过这里不介绍了。

关于更多的ant的Task,请看这里http://ant.apache.org/manual/tasksoverview.html。像是Property Tasks就很重要。

另外推荐ant的官方帮助文档http://ant.apache.org/manual/index.html。内容不多,简单全面。

六:写在最后

学习ant其实对我是出于无奈...hadoop的eclipse插件没搞定,就只好用ant了...不过感觉ant比eclipse更好些。

ant--Java工程打包工具相关推荐

  1. Java工程打包部署到linux服务器整个过程

    本次分享是Java工程打包部署到linux服务器整个过程,包括在服务器上jar包启停的一些经验分享. 操作环境 下面是对已经完成的Java工程打包上传,启停步骤分享. 1.在项目工程中使用Maven的 ...

  2. java工程打包时进行签名_使用Java SDK实现离线签名

    严格来说,tx-signer并不属于SDK,它是bytomd中构建交易.对交易签名两大模块的java实现版.因此,若想用tx-signer对交易进行离线签名,需要由你在本地保管好自己的私钥. 如果你的 ...

  3. 使用Eclipse将包含第三方jar库的java工程打包成jar包

    1.MANIFEST.MF 在工程下新建一个MANIFEST.MF的文件,项目结构如下. M.java package cn.hwd.main; import java.io.IOException; ...

  4. 【Java】打包工具

    配置Maven插件打包jar(包含依赖jar) <build><plugins><plugin><groupId>org.apache.maven.pl ...

  5. ant编译java工程总结

    首先可以参考这两篇文章: dos下编译运行java工程: http://blog.csdn.net/lyhdream/article/details/17200445 dos下打包整个java工程: ...

  6. java工程打成jar包 - 使用maven assembly插件打包及手动打包

    在java工程打包的过程中遇到过不少问题,现在总结一下.一种是典型的maven工程打包,依赖的jar包全都在pom.xml中指定,这种方式打包很方便:另一种是依赖了本机jar包(不能通过pom.xml ...

  7. Spark安装及其sbt和maven 打包工具安装

    一.安装准备 需要先安装hadoop,Java JDK,采用 Hadoop(伪分布式)+Spark(Local模式) 的组合. spark和sbt,maven的版本:spark-2.4.5-bin-w ...

  8. 产品打包工具的制作,ant,编译源码,打jar包,打tag,打war包,备份release版本等...

    1.  在进行打包工具的制作前,需要准备的软件有: svnant-1.3.1 作用是让ant和svn相关联 apache-ant-1.9.7 需要设置ant_home,path,我的配置是: ANT_ ...

  9. 产品打包工具的制作,ant,编译源码,打jar包,打tag,打war包,备份release版本等

    1.  在进行打包工具的制作前,需要准备的软件有: svnant-1.3.1 作用是让ant和svn相关联 apache-ant-1.9.7 需要设置ant_home,path,我的配置是: ANT_ ...

最新文章

  1. Windows 7合理虚拟内存RAMDISK提升运行性能
  2. 《数据分析实战 基于EXCEL和SPSS系列工具的实践》一第2章 数据分析的理论、工具、模型...
  3. SiftingAppender:将不同的线程记录到不同的日志文件中
  4. NuGet version
  5. python六种数据类型不可变_python面试题(-)可变数据类型与不可变数据类型
  6. 孔维滢201771010110《面向对象程序设计(java)》第一周学习总结
  7. DICOM C-GET vs C-MOVE
  8. 牛客网暑期ACM多校训练营(第九场)H. Prefix Sum(CDQ分治)
  9. Spring Boot 注解描述
  10. Js apply方法详解,及其apply()方法的妙用
  11. 计蒜客2018 ICPC SouthEastern European E. Fishermen
  12. 前后端分离页面500错误,控制台不打印错误日志的错误定位
  13. Aspose.Cells 取消隐藏行和列(取消隐藏单行、取消隐藏多行、取消隐藏单列、取消隐藏多列
  14. 阿里云ACP大数据工程师认证,ACP,阿里云ACP认证,阿里云认证,大数据工程师认证
  15. pikachu——验证码绕过(on client)python脚本解法
  16. 服务器及存储产品默认管理IP地址及用户名密码
  17. linux系统如何安装lol,Linux系统下安装红色警戒2步骤详解(2)
  18. 如何用解耦合提升开发效率?闲鱼团队有了新发现
  19. CSpreadSheet类学习(操作EXCEL)
  20. python检测U盘的插入,以及进行自动复制文件并写入文件

热门文章

  1. 数据分析师一定要掌握的基础——描述性统计分析
  2. 学Android开发的人可以去的几个网站
  3. html/css 锚点链接
  4. c语言编程模拟机械钟表行走,C语言模拟时钟转动课设报告-附代码
  5. 接口并发测试之:WebSocket从原理到代码实战,我没草率~
  6. 使用Matplotlib绘制南丁格尔玫瑰图
  7. EXCEL生成随机密码函数
  8. ACM-ICPC 2019 南昌 邀请赛(网络赛)
  9. PSCP工具的使用教程
  10. 学习 IBM 核心理念:愿景、价值观和最佳实践 | Chatopera