关于ant,不得不说的蚂蚁(一)
2004-07-14 08:54
453 查看
Apache Ant:Apache Ant is a Java-based build tool. In theory, it is kind of like Make, but without Make's wrinkles<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
上面是官方的定义, 说白了,就是编译工具,免费,高效。
我专门为写ejb来定义的:Build.xml
大家都知道, ant在compare一个project的时候, 必须编写一个XML, 我们单位为了节省费用, 没有购买Jbuilder, 开发工具有:idea,netBean和Eclipse,我对Eclipse不是很熟悉, 对于jb和idea是用的比较多的, 然而在一般的编译器里面, 我们无法形成两个jar文件, 如果你计划使用ejb, 并且你准备使用分布式的部署, 你将不得不为你的ejb的client来从新生成一个不包含yourEjbNameBean的jar文件。还有在jboss上部署ejb在你的META-INF目录里面必须包含两个xml文件:ejb-jar.xml和jboss.xml, 在jbuilder里面你可以自由的增加jar里面的xml文件, 在idea里面不行, 而ant可以由你任意增加。 为了实现以上两个目的,我编写build.xml文件如下:<?xml version="1.0" <?xml version="1.0" encoding="GB2312" ?> <!-- 参照ant的jakarta-ant-1.6alpha的build.xml Copyright (c) 2002 The Neusoft Software Foundation. All rights reserved. ============================================================ --> <!-- 文档结构为: <project> <property/> 全局变量的定义 <property/>... <target name="1"> 任务组(tasks) <javac></javac> 一项javac任务 ... <oneTask></ontTask> 一项其它任务 </target> <target name="2"> <javac></javac> ... <oneTask></ontTask> </target> </project> project代表一个项目, default:运行到名称为"dist"的target(任务组) basedir:基准路径。 --> <project default="dist" basedir="."> <!-- 定义属性(property tasks) 最好把用到的路径呀,名称呀都在这里定义成全局变量 例:定义 <property name="a" value="hello"/> 以后就可以这样用它: <property name="b" value="${a}/b"/> 现在:b=="hello/b" =========================================================== --> <!--主要的系统环境属性--> <property environment="env"/> <!--取window,unix...的环境变量--> <property name="java.home" value="${env.JAVA_HOME}"/> <property name="ant.home" value="${env.ANT_HOME}"/> <property name="jboss.home" value="${env.JBOSS_HOME}"/> <property name="classpath" value="${env.classpath}"/> <property name="deploydir" value="${env.JBOSS_HOME}/server/default/deploy"/> <!--主要的app环境属性--> <property name="app.name" value="ejbtraining"/> <property name="app.jar" value="${app.name}.jar"/> <property name="appclient.jar" value="${app.name}client.jar"/> <property name="app.copyright" value=" Copyright (c) 2004 The Collegesoft Co., All rights reserved."/> <!--app中src的属性--> <property name="src.dir" value="src" /> <property name="src.main" value="${src.dir}/main"/> <property name="src.script" value="${src.dir}/script"/> <property name="etc.dir" value="etc"/> <!--app用到的lib--> <property name="lib.dir" value="lib"/> <!--app的build目录中--> <property name="build.dir" value="build" /> <property name="build.classes" value="${build.dir}/classes"/> <property name="build.classes.metainf" value="${build.classes}/META-INF"/> <property name="build.docs" value="${build.dir}/docs"/> <property name="build.docs.api" value="${build.docs}/api"/> <property name="build.lib" value="${build.dir}/lib"/> <!--app的dist (distribution) 目录中--> <property name="dist.dir" value="dist"/> <property name="dist.bin" value="${dist.dir}/bin"/> <property name="dist.docs" value="${dist.dir}/docs"/> <property name="dist.lib" value="${dist.dir}/lib"/> <property name="dist.lib.server" value="${dist.lib}/server"/> <property name="dist.lib.client" value="${dist.lib}/client"/> <!--app的docs目录中--> <property name="docs.dir" value="docs"/> <!-- 定义一组路径以后可以通过id重用这组路径 ,例: <javac srcdir="src/main" destdir="build/classes"> <classpath refid="classpath"/> </javac> --> <path id="classpath"> <pathelement location="${classpath}"/> <pathelement location="${build.classes}"/> <pathelement path="${java.home}/lib/tools.jar"/> <pathelement path="${jboss.home}/client/*.jar"/> <pathelement path="${jboss.home}/client/lib/*.jar"/> <pathelement path="${jboss.home}/server/default/lib/jboss-j2ee.jar"/> <pathelement path="${jboss.home}/server/default/lib/javax.servlet.jar"/> </path> <!-- init 准备目录(File Tasks) 主要的目录结构通常是不会变的,一起生成他们 --> <target name="init"> <!--清除以前目录--> <delete dir="${build.dir}" failonerror="false" /> <delete dir="${dist.dir}" failonerror="false"/> <!--准备目录--> <mkdir dir="${build.dir}"/> <mkdir dir="${build.classes}"/> <mkdir dir="${build.classes.metainf}"/> <mkdir dir="${build.docs}"/> <mkdir dir="${build.docs.api}"/> <mkdir dir="${build.lib}"/> <mkdir dir="${dist.dir}"/> <mkdir dir="${dist.bin}"/> <mkdir dir="${dist.lib}"/> <mkdir dir="${dist.lib.server}"/> <mkdir dir="${dist.lib.client}"/> </target> <!-- ====================================================== Build the code (Compile Tasks,File Tasks) ====================================================== --> <target name="build" depends="init"> <!--编译--> <javac srcdir="${src.main}" destdir="${build.classes}"> <classpath refid="classpath"/> </javac> </target> <!-- ============================================================= 拷贝相关的部署xml文件到META-INF --> <target name="ejb-meta-inf" depends="init"> <copy file="${etc.dir}/ejb-jar.xml" tofile="${build.classes.metainf}/ejb-jar.xml" /> <copy file="${etc.dir}/jboss.xml" tofile="${build.classes.metainf}/jboss.xml" /> </target> <!-- ========================================================= 打包文档(Archive Tasks) Create the project jars: xxx1.jar and xxx2.jar ============================================================ --> <target name="jars" depends="build,ejb-meta-inf"> <jar basedir="${build.classes}" jarfile="${dist.lib.server}/${app.jar}"/> <jar basedir="${build.classes}" jarfile="${dist.lib.client}/${appclient.jar}" excludes="com/collegesoft/training/ejb/olympicdate/StatelessDateBean.class, com/collegesoft/training/ejb/helloejb/HelloBean.class" /> </target> <!-- ============================================================= Creates the API documentation ============================================================== --> <target name="javadocs" depends="jars" description="--> creates the API documentation"> <!--copy docs 手册... --> <copy todir="${build.docs}"> <fileset dir="${docs.dir}"/> </copy> <javadoc packagenames="com.collegesoft.training.ejb.*" sourcepath="${src.main}" defaultexcludes="yes" destdir="${build.docs.api}" author="true" version="true" use="true" windowtitle="Docs API"> <doctitle><![CDATA[<h1>hello ant Docs API</h1>]]></doctitle> <bottom><![CDATA[<i>${app.copyright}</i>]]></bottom> <tag name="todo" scope="all" description="To do:" /> </javadoc> </target> <!-- ====================================================== Create the distribution that can run (Archive Tasks) 主要是从各目录中把该copy的copy上 ===================================================== --> <target name="dist" depends="javadocs"> <!--copy bin 执行文件 --> <copy todir="${dist.bin}"> <fileset dir="${src.script}/"/> </copy> <copy todir="${dist.docs}"> <fileset dir="${build.docs}/"/> </copy> <!-- copy lib 文件 --> <copy todir="${dist.lib}"> <fileset dir="${build.lib}/"/> </copy> <copy todir="${deploydir}"> <fileset dir="${dist.lib.server}/"/> </copy> </target> <!-- ====================================================== Cleans everything(File Tasks) 例如可以删除build中的文件,留给你发挥吧 ====================================================== --> <target name="clear" depends="dist"> <!--copy bin 执行文件 --> <copy todir="${dist.bin}"> <fileset dir="${src.script}/"/> </copy> <copy todir="${dist.docs}"> <fileset dir="${build.docs}/"/> </copy> <!-- copy lib 文件 --> <copy todir="${dist.lib}"> <fileset dir="${build.lib}/"/> </copy> <copy todir="${deploydir}"> <fileset dir="${dist.lib.server}/"/> </copy> </target> </project> |
很多人一开始看这个文档, 会摸不着边, 其实很简单,先来说明一下。
<project default="dist" basedir="."> …… </project> |
关于这个标签的说明, 表示了几个意义 1) 执行的基本目录在build.xml的当前目录 2) 这个project的起始任务是”dist” ok,我们来查找, target的name=“dist”的标签:
<target name="dist" depends="javadocs"> <!--copy bin 执行文件 --> <copy todir="${dist.bin}"> <fileset dir="${src.script}/"/> </copy> <copy todir="${dist.docs}"> <fileset dir="${build.docs}/"/> </copy> <!-- copy lib 文件 --> <copy todir="${dist.lib}"> <fileset dir="${build.lib}/"/> </copy> <copy todir="${deploydir}"> <fileset dir="${dist.lib.server}/"/> </copy> </target> |
相关文章推荐
- 关于ant,不得不说的蚂蚁(一)
- 关于Ant工具的配置和使用
- 关于浏览器内核你不得不了解的事
- 关于C++,一些不得不说的话
- 关于Ant下的路径查找
- 关于Ant的全面了解
- 关于机器学习 你不得不思考这些问题
- 关于ant-Design的一些问题
- JAVA MAVEN POM.XML中关于ANT的配置
- 关于Ant脚本文件
- 关于Android ant build的学习
- 关于猪头之不得不说的故事……
- 关于验证码---不得不说的故事
- 关于项目既要使用ant脚本又要使用maven pom.xml文件的问题
- 关于CnForums版权不得不说的事
- 关于Win7 兼容性不得不说的故事
- 关于Java使用Ant打包,编译AIDL时出错的问题
- 关于Ant编译Android中Ant学习研究
- 关于Linux下使用ANT(偷懒的好方式)
- 关于生命周期不得不说的事儿