java使用ant来编译

发表于:2007-06-22来源:作者:点击数: 标签:
下面我们来教大家来使用 ant 来build这个工程。Ant是由apache.org组织来提供给 java 开发 人员使用的如 Unix 平台下的make一样的工程编译工程。 它能自动识别我们要进行javac的java文件,将这些文件进行javac,再按照我们的要求来将这些class文件打包成为相

   
  下面我们来教大家来使用ant来build这个工程。Ant是由apache.org组织来提供给java开发人员使用的如Unix平台下的make一样的工程编译工程。

它能自动识别我们要进行javac的java文件,将这些文件进行javac,再按照我们的要求来将这些class文件打包成为相应的jar包,当然也包括war文件(war文件也是一个jar文件,只是后缀名不同而已,都可以使用jar工具进行打包和解包)。我们先来看看我们为helloejb这个工程所写的build.xml文件,这个文件内容如下:

<?xml version="1.0"?>

<!--

Build file for `orion-primer', an sample J2EE application.

Version: $Revision: 3.1 $ $Date: 2000/08/28 10:03:11 $
Author: Ernst de Haan

-->

<PROJECT basedir="." default="j2ee-ear" name="orion-primer">

 <TARGET name="init">
  <property name="name" value="helloejb"></property>
  <property name="src.dir" value="src"></property>
  <property name="lib.dir" value="lib"></property>
  <property name="rel.dir" value="rel"></property>
  <property name="orion.dir" value="c:\orion"></property>
  <property name="build.compiler" value="classic"></property>
 </TARGET>

 <TARGET name="clean" depends="init">
  <DELTREE dir=${lib.dir}>
  <DELTREE dir=${rel.dir}>
 </TARGET>

 <TARGET name="prepare" depends="init">
  <MKDIR dir=${lib.dir}>
  <MKDIR dir=${lib.dir}/ejb>
  <MKDIR dir=${lib.dir}/ejb/META-INF>
  <MKDIR dir=${lib.dir}/web>
  <MKDIR dir=${lib.dir}/web/WEB-INF>
  <MKDIR dir=${lib.dir}/web/WEB-INF/classes>
  <MKDIR dir=${lib.dir}/j2ee>
  <MKDIR dir=${lib.dir}/META-INF>
  <MKDIR dir=${rel.dir}>
 </TARGET>

 <TARGET name="ejb-classes" depends="prepare">
  <JAVAC
     includes="java.net/chinacode/**"
     classpath="${orion.dir}/ejb.jar" >
 </TARGET>

 <TARGET name="ejb-meta-inf" depends="prepare">
  <COPYFILE

 </TARGET>

 <TARGET name="ejb-jar" depends="ejb-classes,ejb-meta-inf">
  <JAR

 </TARGET>

 <TARGET name="web-classes" depends="prepare">
  <JAVAC
     includes="java/net/chinacode/web/**"
     classpath="${lib.dir}/ejb:${orion.dir}/ejb.jar:${orion.dir}/jndi.jar:${orion.dir}/orion.jar" />
 </TARGET>


 <TARGET name="web-web-inf" depends="prepare">
  <COPYFILE
     dest="${lib.dir}/web/WEB-INF/web.xml" >
 </TARGET>

 <TARGET name="web-war" depends="web-classes,web-web-inf">
  <JAR

 </TARGET>

 <TARGET name="j2ee-meta-inf" depends="prepare">
  <COPYFILE

 </TARGET>

 <TARGET name="j2ee-ear" depends="ejb-jar,web-war,j2ee-meta-inf">
  <COPYFILE

  <COPYFILE

  <JAR

 </TARGET>

</PROJECT>

  我们将这个xml文件存入hdsite/build.xml文件下。这个文件说明了我们去编译整个工程的文件的步骤,同时也可以看到相应的配置文件也就是哪些xml文件是按一个什么样的规则被打包到jar文件中去的。通过ant编绎后我们在hdsite/rel目录下会得到helloejb-ejb.jar文件和helloejb-web.war文件以及helloejb.ear文件。如果需要了解ant的build.xml文件更为详细的信息请到http://www.apache.org网站寻找相应的文档。做好后,我们只要在hdsite目录下运行ant就可以了,它会自动创建一系列的目录,我们只需要得到rel目录下的几个包文件。如果只需要在一个orion服务器上运行servlet加ejb,哪么我们只需要一个ear文件就可以了。如果需要分开运行,哪么web容器就是war文件,jar文件就是ejb容器。

  下面我们来在orion/config目录下的server.xml文件中加入这一行:

  <APPLICATION name="helloejb" path="c:\hdsite\rel\helloejb.ear">

  这样我们就说明了一个在server中运行的应用包或是目录。同时我们也需要在web server的设置中说明一个虚似路径到servlet上,将orion\config\中的default-web-site.xml文件中加入这样一行:

  <WEB-APP name="helloejb-web" root="/helloejb" application="helloejb">

  这样我们就说明了在缺省的web服务器中加入一个/helloejb的虚似路径,并指向helloejb-web这个web容器。哪么大家会问,我们通过浏览器以什么样的路径会访问到这个servlet呢?因为一个servlet没有像html一样是一个文件存在于web服务器可以访问到的路径。很简单,我们可以看到在前面的web容器的配置说明文件web.xml中说明了一个servlet map将HelloServlet指向到了/,哪么我们访问这个servlet的路径就是http://hostname/helloejb/就可以了,如果我们在web.xml中将/改成/helloservlet,哪么我们访问的路径就是http://hostname/helloejb/helloservlet了。

原文转自:http://www.ltesting.net