使用Ant打包工具
由于使用java,javac,jar等工具进行编译打包,即繁琐低效又容易出错,因此Ant出现了。Ant的出现就是专门为了打包编译java代码的,使用之前得稍微学一下。Ant的运行起来主要是依靠配置文件(XML格式),通常命名为build.xml。
使用ant之前当然先装好Java的JDK,JRE,该设的环境变量都弄好。然后在cmd窗口中输入ant.bat。如果设置好ant_home的话,不需要绝对路径的。本人偷懒,没设,但照样可以用。
输入ant.bat -version,查看版本号。
如果正确显示,说明安装没有问题了。
接下来的主要任务,其实是如何编辑build.xml,因为ant所做的动作都是按照build.xml中规定的来执行的。可以从ant官网下载帮助文档。帮助文档很详细,此处只是快速上手,因此简单讲解一下。build.xml中的节点很多,但是以下几个节点比较重要,理解这些节点是很有必要的:project,target,property,task,build-in property等.
project是项目的意思,它是Ant中build.xml文件的根节点, 配置文件至少应该包含一个project,否则会发生错误。在每个project元素下,可包含多个target元素。project通常的写法为:<project name ="jTest" default="jar" basedir=".">,意思是项目名为jTest,默认执行jar命令,基准目录是当前目录。default指的是该配置文件中要运行的默认的目标。看稍后的例子就会明白。
再说一下property节点,这个节点类似是定义了一些常量。Ant自身内建了一些预定义的属性,比如${os.name} 的值就是当前操作系统的名字。如果某个值经常要用到的,那么把它自定义在属性里面,这样要用到这个值的时候,直接用${属性名}
的方式就可以获得了。内建属性也有很多,可以看帮助文档了解更多。这里只说明一下basedir属性,该属性设置了项目的基准路径,该属性在poject节点中定义。property节点中,有2个特性,value和location,稍微有点区别,使用了value就不能使用location,反之亦然,如果这个属性的值是一个路径,那么,如果用value的话,就必须给出绝对路径,但是如果有location的话,可以只给出相对路径(相对于project中的basedir)。
target是目标的意思,它包含在project节点内部的,一个project节点可以包含多个target。一个target内部是定义一些动作命令,即target内定义要做些什么任务。这些任务被称作task。要做什么任务必须要写什么样的指令。这些指令在帮助文档中都可以查到,这里只列出几个常见的。
copy,delete,mkdir,Jar,Java,Javac,看名字类似dos命令,作用也确实和dos命令的差不多。jar表示打包,java表示运行类文件,javac编译文件。
看一个例子:
- <target name="compile" depends="init"
- description="compile the source " >
- <!-- Compile the java code from ${src} into ${build} -->
- <javac srcdir="${src}" destdir="${build}"/>
- </target>
这组xml意思是target的名称为compile,这个可以自定义,depends指的是依赖另一个目标,也就是说若果要运行compile目标,必须先运行depends目标。接下来就是javac任务,通过<javac
srcdir="${src}" destdir="${build}"/>,表示对srcdir路径下的类运行javac命令编译,然后编译的结果输出到destdir中去。${src},${build}都是属性值(property中定义的)。
最后看一个例子。
假设当前的要打包的原文件的目录结构如下,把编辑好的build.xml文件放到要编译打包的目录中去。
- D:\TMPMULU
- │ build.xml
- │
- └─src
- └─mytest
- ├─AnotherPackage
- │ ClassPrintA.java
- │ ClassPrintB.java
- │
- └─mytestpkg
- Tj.java
build.xml的内容如下:
- <?xml version="1.0" ?>
- <project name ="jTest" default="jar" basedir="."><!--默认运行jar目标,但是jar目标依赖run目标,
- run目标依赖compile目标,compile目标依赖clean目标,因此运行顺序是clean,compile,run,jar-->
- <target name="clean">
- <delete dir="${basedir}/build"/><!--执行删除动作,删除路径在dir中定义,
- ${basedir}属性值在project节点中定义了-->
- </target>
- <target name="compile" depends ="clean">
- <mkdir dir ="${basedir}/build/classes"/><!--mkdir,创建目录,运行该任务前必须先运行clean目标-->
- <javac srcdir ="${basedir}/src" destdir ="${basedir}/build/classes"/><!--运行javac,执行编译,编译的路径是srcdir,编译完成后输出目录是destdir-->
- </target>
- <target name="run" depends ="compile">
- <java classname ="mytest.mytestpkg.Tj"><!--执行java命令,即运行编译后的类,该目标必须在compile目标之后运行-->
- <classpath>
- <pathelement path="${basedir}/build/classes"/><!--dos中java命令要设置classpath参数,通过这个节点设置-->
- </classpath>
- </java>
- </target>
- <target name="jar" depends="run">
- <jar destfile="Tj.jar" basedir="${basedir}/build/classes"><!--运行jar命令,执行打包动作,必须在run目标完成才执行。-->
- <manifest>
- <attribute name="Main-class" value="mytest.mytestpkg.Tj"/><!--创建一个manifest文件。manifest文件的概念可以参考JAR文件规范
- http://docs.oracle.com/javase/1.5.0/docs/guide/jar/jar.html#JAR Manifest-->
- </manifest>
- </jar>
- </target >
- </project>
运行ant命令。两种方式:如果当前路径不是D:\tmpmulu\,则可以通过-f参数指定build.xml文件的位置。
C:\Users\Administrator>C:\ant\bin\ant.bat -f D:\tmpmulu\build.xml
如果当前路径是D:\tmpmulu\,直接运行ant.bat就可以了,ant会自动寻找build.xml.
运行后,界面上会显示出每个目标的运行情况,run目标中,会输出程序打印的内容。并且在basedir下,生成一个Tj.jar的包。运行后的文件结构如下:
- D:\TMPMULU
- │ build.xml
- │ Tj.jar
- │
- ├─build
- │ └─classes
- │ └─mytest
- │ ├─AnotherPackage
- │ │ ClassPrintA.class
- │ │ ClassPrintB.class
- │ │
- │ └─mytestpkg
- │ Tj.class
- │
- └─src
- └─mytest
- ├─AnotherPackage
- │ ClassPrintA.java
- │ ClassPrintB.java
- │
- └─mytestpkg
- Tj.java
借助一些IDE工具,比如eclipse等,可以不必手动编辑build.xml,工具会自动帮我们生成的。
使用Ant打包工具的更多相关文章
- 使用Ant打包工具 基本介绍
由于使用java,javac,jar等工具进行编译打包,即繁琐低效又容易出错,因此Ant出现了. Ant的出现就是专门为了打包编译java代码的,使用之前得稍微学一下.Ant的运行起来主要是依靠配置文 ...
- 产品打包工具的制作,ant,编译源码,打jar包,打tag,打war包,备份release版本等
1. 在进行打包工具的制作前,需要准备的软件有: svnant-1.3.1 作用是让ant和svn相关联 apache-ant-1.9.7 需要设置ant_home,path,我的配置是: ANT_ ...
- 不会用ant打包、部署项目的工程师,不是一个好程序员(测试)
副标题:利用ant脚本 自动构建svn增量/全量 系统程序升级包 首先请允许我这样说,作为开发或测试,你一定要具备这种本领.你可以手动打包.部署你的工程,但这不是最好的方法.最好的方式就是全自动化的方 ...
- 深入了解Ant构建工具 命令
深入了解Ant构建工具 标签: ant工具任务jarjavaclass 2010-05-29 21:16 1346人阅读 评论(2) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. ...
- MyEclipse使用Ant打包项目
本章主要介绍如何使用ant打包发布项目. ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.在实际软件开发中,有很多地方可以用到ant. 优点 ...
- Unity自动打包工具
转载 https://blog.csdn.net/ynnmnm/article/details/36774715 最开始有写打包工具的想法,是因为看到<啪啪三国>王伟峰分享的一张图,他们有 ...
- Unity自己主动打包工具
最開始有写打包工具的想法,是由于看到<啪啪三国>王伟峰分享的一张图,他们有一个专门的"工具程序猿"开发各种工具. (ps:说起来这个王伟峰和他的创始团队成员,曾经跟我是 ...
- ant 打包脚本
现在很多人都用ant脚本来进行打包,下面就介绍一下这个打包工具常见的用法.以及脚本如何编写 <!-- 定义任务,清空任务:清空原有的classes目录,重新创建 --> <targe ...
- 细说前端自动化打包工具--webpack
背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...
随机推荐
- Eclipse使用高版本的jdk编译低版本的class文件的方法
如题,在这两天使用eclipse工具编译代码时,编译出来的class文件拿UE工具查看,版本为1.8版本的,而本地使用的tomcat版本是1.6的,运行中报错Unsupported major.min ...
- linux常用命令(12)head命令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾.1 命令格式head [ ...
- [转] Maven 从命令行获取项目的版本号
[From]https://blog.soebes.de/blog/2018/06/09/help-plugin/ I bet you have been faced with the situati ...
- 升级Nginx1.14.1以上版本
一.编译Nginx ①.下载Nginx最新版 目前Nginx最新版是今年11月份发布的 1.9.7 版本,反正1.9+是没有稳定版,所以干脆弄个最新版: cd /usr/local/src w ...
- mobile/immobile species的区别
在地下水反应运移模型中: “mobile species” 涉及运移和反应过程(transport+reaction) “immobile” species 只涉及反应过程 (reaction)
- python基础之编码
ascci:字母.数字.特色字符,1个字节-8位Unicode:两个字节-16位,升级版四个字节-32位uft-8:最少一个字节-8位,英文字母-1个字节-8位,欧洲-2个字节-16位,中文-3个字节 ...
- c语言GCC mingw 64位安装
1.安装步骤和下载地址 一.MinGW简介 MinGW是是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API).库和可执行文件.MinGW是从Cy ...
- TOEFL | 听力题型
通常是2个对话,4个讲座,但可能会有加试: 2~3 conversations 5 Questions/Each 4~6 lectures 6 Questions/Each 正 ...
- HanLP-停用词表的使用示例
停用词表的修改 停用词表在“pyhanlp\static\data\dictionary”路径下的“stopwords.txt”文件中,CoreStopWordDictionary.apply方法支持 ...
- (四)Java秒杀项目之JMeter压测
一.JMeter入门压测 1.打开JMeter工具,选中测试计划->右键添加->线程(用户)->线程组,页面中的线程数就是并发数,页面中的Ramp-Up时间(秒)表示通过多长时间启动 ...