ant使用小结

使用builder.xml的方式;
完成的工作:打jar包并运行,其中引用了第三方jar和配置文件;

<?xml version="1.0" encoding="UTF-8"?>
<project name="InternetBusinessSurfer" default="run" basedir=".">
<property name="src" value="src"></property>
<property name="dest" value="classes" />
<property name="lib" value="lib"></property>
<property name="jarname" value="InternetBusinessSurfer.jar"></property>

<target name="init" >
<mkdir dir="${dest}"></mkdir>
</target>

<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}" debug="true" includeantruntime="on">
<classpath>
<fileset dir="${lib}" includes="*.jar"></fileset>
</classpath>
</javac>
</target>

<target name="build" depends="compile">
<jar jarfile="${jarname}" basedir="${dest}">
</jar>
</target>

<target name="run" depends="build">
<java classname="com.control.Main" classpath="${jarname}">
<classpath>
<fileset dir="${lib}" includes="*.jar"></fileset>
<pathelement location="${src}"></pathelement>
</classpath>
</java>
</target>

<target name="clean">
<delete dir="${dest}"></delete>
</target>

<target name="rerun" depends="clean,run">
<ant target="clean"></ant>
<ant target="run" ></ant>
</target>

</project>

解析:

<?xml version="1.0" encoding="UTF-8"?> //xml文件的定义
<project name="InternetBusinessSurfer" default="run" basedir=".">
</project>//ant的所有内容必须包含在这个里边,name是你给它取的名字,basedir故名思意就是工作的根目录 .代表当前目录。default代表执行的target,必填项。
<property name="src" value="src"></property> //定义的变量,在后面的target中写物理路径也行,但不方便修改

<target name="init" > //定义name,其它target引用时使用
<mkdir dir="${dest}"></mkdir> //建立一个文件夹
</target> //一个任务
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}" debug="true" includeantruntime="on">
 //includeantruntime,不指定会有提示:warning: 'includeantruntime' was not set,设置引属性后ant输出ant用到的时间。eg:Total time: 1 second
<classpath>
<fileset dir="${lib}" includes="*.jar"></fileset>
</classpath> //classpath是ant内置的关键字,用来指定程序编译用到的jar,即claspath。如果引用第三方jar,不设置会编译失败
</javac>
</target> 

<target name="compile" depends="init"> :depends是它所依赖的target,在执行这个target 例如这里的compile之前ant会先检查init是否曾经被执行过,如果执行
过则直接直接执行compile,如果没有则会先执行它依赖的target例如这里的init,然后在执行这个target

<target name="run" depends="build">
<java classname="com.control.Main" classpath="${jarname}">
<classpath>
<fileset dir="${lib}" includes="*.jar"></fileset>
<pathelement location="${src}"></pathelement>
</classpath>
</java>
</target> 

加载配置文件时,下面写法会报错:

<classpath>
<fileset dir="${lib}" includes="*.jar"></fileset>
<fileset dir="${src}">
<include name="*.xml"></include>
<include name="*.properties"></include>
</fileset>
</classpath>

报错信息:Unable to obtain resource from x:\java\workspace\InternetBusinessSurfer\src\log4j.properties: java.util.zip.ZipException: error in opening zip file

解决方法是使用pathelement元素:

<classpath>
<fileset dir="${lib}" includes="*.jar"></fileset>
<pathelement location="${src}"></pathelement>
</classpath> 

以下两个target不是必须的:

<target name="clean">
<delete dir="${dest}"></delete>
</target>//删除生成的文件

<target name="rerun" depends="clean,run">
<ant target="clean"></ant>
<ant target="run" ></ant>
</target>//再次运行,在一个target里边调用其他的target
 
web项目的:
<?xml version="1.0"?>
<project name="antwebproject"  default="war"basedir=".">
 <property name="classes" value="build/classes"/>
    <property name="build"value="build"/>
    <property name="lib"value="WebRoot/WEB-INF/lib"/>
    <!-- 删除build路径-->
    <target name="clean">
       <delete dir="build"/>
    </target>

    <!-- 建立build/classes路径,并编译class文件到build/classes路径下-->
    <target name="compile" depends="clean">
       <mkdir dir="${classes}"/>

       <javac srcdir="src" destdir="${classes}"/>
    </target>

    <!-- 打war包-->
    <target name="war" depends="compile">
<war destfile="${build}/antwebproject.war" webxml="WebRoot/WEB-INF/web.xml">
           <!-- 拷贝WebRoot下除了WEB-INF和META-INF的两个文件夹-->
    <fileset dir="WebRoot" includes="**/*.jsp"/>

           <!-- 拷贝lib目录下的jar包-->
           <lib dir="${lib}"/>
           <!-- 拷贝build/classes下的class文件-->
           <classesdir="${classes}"/>
       </war>
    </target>
</project>

http://reiz6153.blog.163.com/blog/static/4010891520119251583163/
http://www.cnblogs.com/xwdreamer/archive/2011/11/23/2296925.html
http://www.cnblogs.com/wufengxyz/archive/2011/11/24/2261797.html
http://www.blogjava.net/amigoxie/archive/2007/11/09/159413.html
http://www.cnblogs.com/ilahsa/archive/2012/09/07/2674733.html
http://blog.csdn.net/sunmoon631/article/details/6703949
http://www.cnblogs.com/zdz8207/p/jva-eclipse-ant.html
时间: 2024-10-22 00:43:45

ant使用小结的相关文章

Android笔记之:App自动化之使用Ant编译项目多渠道打包的使用详解_Android

随着工程越来越复杂,项目越来越多,以及平台的迁移(我最近就迁了2回),还有各大市场的发布,自动化编译android项目的需求越来越强烈,后面如果考虑做持续集成的话,会更加强烈.    经过不断的尝试,在ubuntu环境下,以花界为例,我将一步一步演示如何使用命令行,使用ant编译android项目,打包多渠道APK.    要点:    (1). 编译android的命令使用    (2). ant基本应用    (3). 多项目如何编译(包含android library)    (4). 如

Android签名知识小结_Android

一.为什么要签名 开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同样的名字,这时候如何区分?签名这时候就是起区分作用的. 由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,签名可以保证相当名字,但是签名不同的包不被替换. APK如果使用一个key签名,发布时另一个key签名的文件将无法安装或覆盖老的版本,这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉. 这样签名其实也是开发者的身份标识.交易中抵赖等事情发生时,签名可以防止抵赖的发生. 二.

Mavens实战 1.5小结

1.5小结 本章只是从概念上简单地介绍了一下Maven,通过本章我们应该能大致了解Maven是什么,以及它有什么用途.我们还将Maven与其他流行的构建工具(如Make和Ant)做了一些比较和分析.如果你没用过Maven,但有Make或者Ant的使用经验,相信通过比较你能更清楚地了解各种工具的优劣,并且会对Maven有一个理性的认识. 将Maven和极限编程结合起来分析是为了让大家从另一个角度了解Maven,毕竟软件开发离不开对于软件过程的理解. 本章最后还收集了一些用户对Maven的误解,并逐

2.6本章小结

2.6本章小结 本章从下载Activiti开始介绍,接着对配置JDK.Ant.Maven环境进行讲解,然后在此基础上逐步介绍最简单的Hello World程序,紧接着又进阶到如何使用userTask及scriptTask,并且利用单元测试验证所的期望结果,最后就如何运行Activiti Explorer进行讨论,使读者学会如何部署流程并解决中文乱码问题,以及如何在Activiti Explorer上启动.签收.完成任务.相信读者现在已经对Activiti开发环境有了一个大体的了解,本章接触到的启

Android签名知识小结

一.为什么要签名 开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同样的名字,这时候如何区分?签名这时候就是起区分作用的. 由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,签名可以保证相当名字,但是签名不同的包不被替换. APK如果使用一个key签名,发布时另一个key签名的文件将无法安装或覆盖老的版本,这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉. 这样签名其实也是开发者的身份标识.交易中抵赖等事情发生时,签名可以防止抵赖的发生. 二.

【SpringMVC框架】小结+视图解析器配置前缀和后缀

1.入门程序小结 通过入门程序理解springmvc前端控制器.处理器映射器.处理器适配器.视图解析器用法. 前端控制器配置: 第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析 第二种:/,所以访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析   使用此种方式可以实现 RESTful风格的url 处理器映射器: 非注解处理器映射器(了解) 注解的处理器映射器(掌握)对

Maven项目错误解决小结

Maven项目错误解决小结 注:整理错误,不喜欢为了一个小问题,占篇幅,所以请Ctrl+F自己查看,定位问题,愿为解决. 注:网络上的错误解决经验,只是作者在特定的条件下发生,或者适合你不适合你,请勿责怪,若无解决答案,请你请教他人或耐心解决,可以记录之后分享,我们爱分享,一起开始吧! 问题1: -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable an

使用ANT编译项目报错 com.sun.image.codec.jpeg does not exist 解决方法

项目开发中在对图片进行裁切处理的时候,有时候是会使用到 com.sun 包下的类时, 如果项目使用ant编译,会出现错误 com.sun.image.codec.jpeg does not exist 这是因为在JDK1.7+时,Oracle不允许使用sun.*的jar 具体参见http://www.oracle.com/technetwork/java/faq-sun-packages-142232.html . 项目代码已经写好,且直接运行可以正常使用,只是使用ant编译会出现错误,现在不打

ant打jar包

1.下载:http://ant.apache.org/bindownload.cgi     Xml代码   <project name="build_rtf" default="jar" basedir=".">                <!-- class文件路径-->        <property name="class.dir" value="bin"/>