Apache Ant: Apache Ant is a Java-based build tool. In theory, it is kind of like Make, but without Make's wrinkles
上面是官方的定义, 说白了, 就是编译工具, 免费,高效。
我专门为写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" 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 ==============================================================
|