使用Ant打包工具 基本介绍
2015-07-28 17:11
411 查看
由于使用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}都是属性值。
最后看一个例子。
假设当前的要打包的原文件的目录结构如下,把编辑好的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,工具会自动帮我们生成的。
本文出自 “一只博客” 博客,请务必保留此出处http://cnn237111.blog.51cto.com/2359144/1130502
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}都是属性值。
最后看一个例子。
假设当前的要打包的原文件的目录结构如下,把编辑好的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,工具会自动帮我们生成的。
本文出自 “一只博客” 博客,请务必保留此出处http://cnn237111.blog.51cto.com/2359144/1130502
相关文章推荐
- 获取EMF文件内全部文字, 并按照左上到右下的顺序排序
- Androidproject夹
- Linux Shell种类简单介绍
- 基于swiftype应用于Hexo-Yilia-主题的站内搜索引擎
- hdu1051
- 如何去选择CDN网络加速?深圳锐网科技
- MongoDB命令行操作
- iOS通过app1调用app2,同时app隐藏图标
- gdb学习笔记
- LeetCode 11 -- Container With Most Water
- 转载 关于malloc
- shell脚本:shell的基本元素-7 特殊文件:/dev/null与/dev/tty
- SEO基础代码优化
- rsync+inotify实现文件实时同步
- ViewBag和ViewData
- 设置UILabel 两端对齐
- Swift学习笔记系列——(12)继承
- 发布当前目录到web访问
- 国外整理的一套在线渗透测试资源合集
- hdoj 3785 寻找大富翁【优先队列+sort排序】