Apache Ant 基础使用小结
2012-09-20 16:53
465 查看
序
一直使用ant编译部署java web程序, ant编译文件的编写也一直是参考平台现有的编译文件,然后结合自己项目的实际情况进行修改。现在开始慢慢转用Maven和Ivy+ant,于是重新梳理了下ant的知识,亲手编写一个完整的ant编译文件,以加固对ant的认识。Ant 一些基础使用方法
我用ant做什么呢,对于java web工程,主要是编译工程,打包,部署。 对于一些后台的控制台程序,还使用ant来启动程序,最后写个简单的bat脚本。在windows系统下就可以通过运行bat文件来启动java控制台程序了。Ant编译文件build.xml中的一些基础操作
1. 规划好项目的目录结构,ant不像maven,目录结构很随意,所以,要指定好程序源码目录,编译后class文件存放的目录,jar包部署的目录,配置文件的目录,依赖的jar包存放在哪个目录等。2. 编译前,清理掉上次编译部署的文件。
3. 指定classpath信息,为编译准备。程序依赖的jar包,配置文件等,要添加到classpath中。不然编译通不过。
4. 编译程序,指定javac编译器,以及编译器的一些参数。
5. 打包,程序编译后的class文件,通常会在部署前打成jar包。
6. 部署,像web应用,最后我们通常是把ROOT目录下的内容拷贝带tomcat等服务器下面去运行,所以需要使用ant将配置文件,jar包等拷贝到ROOT目录下相应的文件夹中。
示例:
文件目录:
编译文件内容:
<?xml version="1.0" encoding="UTF-8"?> <project name="simpleWebDemo" default="deploy"> <!-- 声明项目的一些基础属性:项目名称,版本, 目录结构 --> <property name="project.dir" value="." /> <property name="project.name" value="simpleWebDemo" /> <property name="project.version" value="v0.1" /> <property name="project.build.dir" value="${project.dir}/build" /> <property name="project.conf.dir" value="${project.dir}/conf" /> <property name="project.src.dir" value="${project.dir}/src" /> <property name="project.web.dir" value="${project.dir}/WebContent" /> <property name="project.web.classes.dir" value="${project.web.dir}/WEB-INF/classes" /> <property name="project.web.lib.dir" value="${project.web.dir}/WEB-INF/lib" /> <!-- 声明编译后的jar包名称 --> <property name="project.jar.file" value="${project.name}-server.jar" /> <!-- 编译javac的参数值 --> <!--modern: the standard compiler of JDK 1.3/1.4/1.5/1.6 --> <property name="javac.compiler" value="modern" /> <property name="javac.debug" value="on" /> <property name="javac.deprecation" value="off" /> <!--fork: Whether to execute javac using the JDK compiler externally; defaults to no. --> <property name="javac.fork" value="true" /> <property name="javac.memoryMaximumSize" value="256m" /> <property name="javac.nowarn" value="on" /> <!-- 设置classpath --> <path id="project.classpath"> <fileset dir="${project.web.lib.dir}" includes="**/*.jar" /> <pathelement path="${project.conf.dir}" /> </path> <!-- 清理:将之前编译的的class文件,jar包, 及配置文件等清理掉 --> <target name="clean"> <delete> <fileset dir="${project.web.classes.dir}" /> </delete> <delete> <fileset dir="${project.build.dir}" /> </delete> <delete file="${project.web.lib.dir}/project.jar.file" failonerror="true" /> </target> <!-- 编译 --> <target name="compile" depends="clean"> <mkdir dir="${project.build.dir}" /> <javac classpathref="project.classpath" compiler="${javac.compiler}" debug="${javac.debug}" deprecation="${javac.deprecation}" fork="${javac.fork}" nowarn="${javac.nowarn}" memoryMaximumSize="${javac.memoryMaximumSize}" srcdir="${project.src.dir}" destdir="${project.build.dir}" encoding="utf-8" /> </target> <!-- 打包:生成jar包 --> <target name="pakage" depends="compile"> <tstamp> <format property="jar.time" pattern="yyyy-MM-dd hh:mm" /> </tstamp> <jar basedir="${project.build.dir}" jarfile="${project.web.lib.dir}/${project.jar.file}" > <manifest> <section name="pakage-info"> <attribute name = "package-by" value = "${user.name}" /> <attribute name = "package-date" value = "${jar.time}" /> <attribute name = "project-name" value = "${project.name}" /> <attribute name = "project-version" value = "${project.version}" /> </section> </manifest> </jar> </target> <!-- 部署: 将配置文件等拷贝到class文件夹下. --> <target name="deploy" depends="pakage"> <copy todir="${project.web.classes.dir}"> <fileset dir="${project.conf.dir}" excludes="**/*.svn" /> </copy> </target> </project>
使用Ant启动java控制台程序
对于java控制台程序的运行,就没有运行.net的控制台程序那么方便了, 通常需要写bat脚本,指定classpath,调用java指令来运行,使用ant,就方便一些。<?xml version="1.0"?> <project name="service" default="start-server"> <!-- 定义目录信息 --> <property name="server.bin.dir" value="." /> <property name="server.dir" value="${server.bin.dir}/.." /> <property name="server.libs.dir" value="${server.dir}/libs" /> <property name="server.conf.dir" value="${server.dir}/conf" /> <!-- 定义启动类:含main方法的类--> <property name="server.startup.class" value="com.codemouse.server.StartingServer" /> <!-- 定义classpath --> <path id="server.classpath"> <pathelement path="${server.bin.dir}" /> <pathelement path="${server.conf.dir}" /> <fileset dir="${server.libs.dir}" includes="**/*.jar" /> </path> <!-- 调用java指令运行程序 --> <target name="start-server"> <java classname="${server.startup.class}" classpathref="server.classpath" fork="true" maxmemory="1024m" newenvironment="true" dir="${server.dir}" > <jvmarg value="-DClientID=dataGen_clientID -Duser.timezone=GMT+8:00" /> </java> </target> </project>
然后写个简单的启动脚本startup.bat, 就可以运行程序了。内容如下, 需要设置ant的目录,部署的时候ant目录需要一起发布
@echo off title Noise Data Gen (v0.1) echo start generating ... set CURRENT_DIR=%cd% cd .. set BASE_DIR=%cd% set ANT_HOME=%BASE_DIR%\ant set _RUN_ANT=%ANT_HOME%\bin\ant cd %CURRENT_DIR% "%_RUN_ANT%" -buildfile %CURRENT_DIR%\service.xml -e start-server
编写build.xml文件一些好的习惯
1. 使用 import 将冗长的build.xml文件按逻辑拆分: 比如将通用的一些内容放在build-common.xml文件中,然后在build.xml文件开头用import包含进来<import file="build-common.xml"/><property name="javac.memoryMaximumSize" value="256m" /> <property name="javac.nowarn" value="on" /> <import file="build-common.xml"/> <!-- 清理:将之前编译的的class文件,jar包, 及配置文件等清理掉 --> <target name="clean"> <delete> <fileset dir="${project.web.classes.dir}" /> </delete> <delete> <fileset dir="${project.build.dir}" /> </delete> <delete file="${project.web.lib.dir}/project.jar.file" failonerror="true" /> </target>
2. 使用build.properties文件声明一些基础属性, 将build.xml前面冗长的属性声明写在build.properties文件中,然后在build.xml文件中包含进来
<project name="service" default="start-server"> <property name="server.bin.dir" value="." /> <property file="build.properties" />build.properties文件内容
## ## 根目录 ## server.dir=${server.bin.dir}/.. server.libs.dir=${server.dir}/libs server.conf.dir=${server.dir}/conf ## ## 程序启动类(main类) ## server.startup.class=com.codemouse.server.StartingServer
相关文章推荐
- Apache Ant的使用(1)——基础使用教程
- jquery使用小结2(个人向)(基础向)
- Java基础—IO小结(二)缓冲流与其它流的使用
- JSP基础简单使用小结
- VC6.0基础知识使用小结
- java基础小结(附String的使用方法)
- 【计算机基础】 浮点数的使用小结
- iOS开发-基础:NSDictionary使用小结
- Sqlite3基础使用小结(包括通常遇到的问题)
- Apache Ant 使用基础
- swift 基础小结 --delegate、Optional、GCD的使用、request请求、网络加载图片并保存到沙箱、闭包以及桥接
- iOS开发UI基础—25UITableview控件使用小结
- 本文从以下几个基础的方面介绍dom4j操作XML的使用小结,挺好!
- Hibernate search使用示例(基础小结-注解方式)
- Apache Ant 使用基础
- jquery使用小结1(个人向)(基础向)
- 【转载】Apache Ant的使用(1)——基础使用教程
- Java基础温习 (4)Java关键字static、final使用小结
- Java基础温习 (8)Java内部类的使用小结
- Hibernate search使用示例(基础小结-注解方式)