ant

xiaoxiao2024-07-26  32

ant实践入门 关键字: ant 问题的提出: Ant(蚂蚁是搬东西的):编译,打包,配置,部署。 这些命令如果一个个地写很麻烦,而且不可以重用,能不能把一个动态的过程描述成一个静态的步骤。 于是,我们想到用一个批处理命令文件,但是如果用.sh和.bat则不可以跨平台,但是如果用ant则可以跨平台。 Ant为了做到跨平台,一个是跨操作系统,另一个是跨IDE,Ant首先抽象出一个中间语言,这个语言是基于xml的。 然后,用Ant执行器来解析该xml描述的操作,并最终和操作系统的批处理命令对应起来。当然,对于ftp这样的外部命令, 可以由第三方插件来支持。 Ant是Apache组织负责开发和维护的,Ant的许多第三方插件也是Apache支持的,比如ftp任务。 http://jakarta.apache.org/ant Ant的基本任务 常用的内置任务:javac java jar war copy delete mkdir move tstamp 1、java应用程序相关的 【编译】 <javac srcdir="myproject/mysrc" destdir="classes" /> 将源代码编译输出的classes类文件输出到哪。 我们能不能只选择具有某些特性的源代码才编译呢?或者编译的时候,我们要依赖于第三方的一些库呢? <javac srcdir="myproject/mysrc" destdir="classes" excludes/includes="mypackage/**" classpath="mylib.jar"/> 【运行】 <java classname="textMyTest"> <java classname="testMyTest" classpath="tester.jar" fork="yes"> 由于build.xml是由ant来执行的,解析ant要用一个jvm;那么运行的程序可在同一个jvm,也可以单独一个jvm。 fork=yes是不同的jvm。 <java classname="testMyTest"> <classpath> <pathelement path="myproject/classes"> <pathelement location="mylib/lib.jar"> </classpath> //classpath这个复合节点,很明朗地让我们明白了java中的常见classpath,一种是基于目录的(比如classes目录),另一种是基于.jar文件的。 //分别对应pathelement path="目录" pathelement location=".jar" </java> 【打包 jar】 <jar jarfile="myjar.jar" basedir="myproject/root" /> <jar jarfile="myjar.jar" basedir="myproject/root" excludes="*.html" update="yes"/> <jar jarfile="myjar.jar" basedir="myproject/root" compress="false" /> //是否使用压缩形式 【打包 war】 2、操作文件系统 <copy file="myfile.txt" tofile="root/WEB-INF/web.xml" /> <copy file="myfile.txt" tofile="root/WEB-INF/web.xml" overWrite="yes" /> <delete file="myfile.jar" /> <delete dir="myproject/temp" /> 3、资源的集合 FileSets和PatternSets <patternset> 元素定义一个符合条件的资源的集合。(利用正则表达式来进行过滤) <fileset> 元素定义一个相对于基本目录的资源集合。 <patternset id="javaFiles"> <include name="**/*.java"> (定义所有的java源文件,无论是哪个目录,包括当前目录及其子目录) </patternset> <fileset dir ="myproject/src"> <patternset refid="javaFiles"> (用fileset来指定基本目录,然后用patternset来过滤基本目录及其子目录满足条件的文件) </fileset> 4、应用fileset和patternset <jar jarfile="mylib.jar"> <fileset dir="myproject/classes" /> <fileset dir="myproject/bin"> //可以从一个或多个fileset中创建jar </jar> <delete> <fileset dir="."> <patternset refid="classonly" /> </fileset> </delete> <copy todir="../app"> <fileset dir="myproject/root"> <patternset> <exculude name="**/*.java"> </patternset> </fileset> </copy> 5、 <ant dir="myproject" /> 则选择缺省的build.xml文件; <ant dir="myproject" antfile="c:/test/mybuild.xml" /> 专门指定了build文件。 6、实例 <project name="myWebApp" default="deploy" basedir="."> <property name="webHome" value="c:\beta\weblogic" /> <property name="domain" value="mydomain" /> <target name="compile"> <mkdir dir="classes" /> //编译所有的java代码,当然有时我们可以排除单元测试的 <javac srcdir="src" destdir="classes" /> </target> <target name="layout" depends="compile"> //编译完后部署到web服务器上去 <mkdir dir="temp/WEB-INF/classes" /> <copy todir="temp/WEB-INF/classes"> <fileset dir="classes"> //使用fileset和patternset来定义资源集合 </copy> <copy todir="webroot"> <fileset dir="webroot" /> </copy> </target> <target name="archive" depends="layout"> <jar jarfile="musite.war" basedir="temp" /> <delete dir="classes" /> <delete dir="temp" /> </target> </project>
转载请注明原文地址: https://www.6miu.com/read-5017144.html

最新回复(0)