ant--Java工程打包工具
写这篇博客是简介一下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工程打包工具相关推荐
- Java工程打包部署到linux服务器整个过程
本次分享是Java工程打包部署到linux服务器整个过程,包括在服务器上jar包启停的一些经验分享. 操作环境 下面是对已经完成的Java工程打包上传,启停步骤分享. 1.在项目工程中使用Maven的 ...
- java工程打包时进行签名_使用Java SDK实现离线签名
严格来说,tx-signer并不属于SDK,它是bytomd中构建交易.对交易签名两大模块的java实现版.因此,若想用tx-signer对交易进行离线签名,需要由你在本地保管好自己的私钥. 如果你的 ...
- 使用Eclipse将包含第三方jar库的java工程打包成jar包
1.MANIFEST.MF 在工程下新建一个MANIFEST.MF的文件,项目结构如下. M.java package cn.hwd.main; import java.io.IOException; ...
- 【Java】打包工具
配置Maven插件打包jar(包含依赖jar) <build><plugins><plugin><groupId>org.apache.maven.pl ...
- ant编译java工程总结
首先可以参考这两篇文章: dos下编译运行java工程: http://blog.csdn.net/lyhdream/article/details/17200445 dos下打包整个java工程: ...
- java工程打成jar包 - 使用maven assembly插件打包及手动打包
在java工程打包的过程中遇到过不少问题,现在总结一下.一种是典型的maven工程打包,依赖的jar包全都在pom.xml中指定,这种方式打包很方便:另一种是依赖了本机jar包(不能通过pom.xml ...
- Spark安装及其sbt和maven 打包工具安装
一.安装准备 需要先安装hadoop,Java JDK,采用 Hadoop(伪分布式)+Spark(Local模式) 的组合. spark和sbt,maven的版本:spark-2.4.5-bin-w ...
- 产品打包工具的制作,ant,编译源码,打jar包,打tag,打war包,备份release版本等...
1. 在进行打包工具的制作前,需要准备的软件有: svnant-1.3.1 作用是让ant和svn相关联 apache-ant-1.9.7 需要设置ant_home,path,我的配置是: ANT_ ...
- 产品打包工具的制作,ant,编译源码,打jar包,打tag,打war包,备份release版本等
1. 在进行打包工具的制作前,需要准备的软件有: svnant-1.3.1 作用是让ant和svn相关联 apache-ant-1.9.7 需要设置ant_home,path,我的配置是: ANT_ ...
最新文章
- Windows 7合理虚拟内存RAMDISK提升运行性能
- 《数据分析实战 基于EXCEL和SPSS系列工具的实践》一第2章 数据分析的理论、工具、模型...
- SiftingAppender:将不同的线程记录到不同的日志文件中
- NuGet version
- python六种数据类型不可变_python面试题(-)可变数据类型与不可变数据类型
- 孔维滢201771010110《面向对象程序设计(java)》第一周学习总结
- DICOM C-GET vs C-MOVE
- 牛客网暑期ACM多校训练营(第九场)H. Prefix Sum(CDQ分治)
- Spring Boot 注解描述
- Js apply方法详解,及其apply()方法的妙用
- 计蒜客2018 ICPC SouthEastern European E. Fishermen
- 前后端分离页面500错误,控制台不打印错误日志的错误定位
- Aspose.Cells 取消隐藏行和列(取消隐藏单行、取消隐藏多行、取消隐藏单列、取消隐藏多列
- 阿里云ACP大数据工程师认证,ACP,阿里云ACP认证,阿里云认证,大数据工程师认证
- pikachu——验证码绕过(on client)python脚本解法
- 服务器及存储产品默认管理IP地址及用户名密码
- linux系统如何安装lol,Linux系统下安装红色警戒2步骤详解(2)
- 如何用解耦合提升开发效率?闲鱼团队有了新发现
- CSpreadSheet类学习(操作EXCEL)
- python检测U盘的插入,以及进行自动复制文件并写入文件