Ant中常用的元素和任务

sql 代码
  1. 以build_for_ejb_templet.xml为示例,讲解Ant中常用的元素和任务。    
  2.   
  3. 约定: "…"表示这里有很多代码,未列出    
  4.   
  5. build_for_ejb_templet.xml任务的分为以下几大部分    
  6. i. 开始    
  7. ii. 初始化    
  8. iii. 定义classpath    
  9. iv. 为编译作准备    
  10. v. 编译EJB部分    
  11. vi. 编译WEB部分    
  12. vii. 编译J2EE Application    
  13. viii. 部署Application    
  14. ix. 创建组件的API    
  15. x. 确定build的目标    
  16.   
  17. build_for_ejb_templet.xml的讲解    
  18.   
  19. 开始    
  20. <?xml version="1.0" encoding="UTF-8"?>    
  21. 讲解:encoding="UTF-8"表示XML文件采用UTF-8编码格式,如果要使用GBK编码,需定义为encodeing="GBK"。   
  22.   
  23. <!--     
  24.   Build file for 'componentName'     
  25.   Creation date : $Date: yyyy-m-d $     
  26.   Updated date : $Date: yyyy-m-d $     
  27.   Author:  developerName   
  28.   Copyright 2002 CompanyName, Inc. All rights reserved.     
  29. -->     
  30. 讲解:此部分为文件内容的简介,包括文件名称、创建日期、最后修改日期、创建文件的作者、版权。   
  31. componentName 表示 文件名称   
  32. yyyy-m-dd 表示 创建日期、最后修改日期的格式,如2002-5-1   
  33. developerName 表示 创建文件的作者   
  34. CompanyName 表示 公司名称或URL   
  35.   
  36. <project name="componentName" default="core" basedir=".">   
  37. …   
  38. </project>   
  39. 讲解:此部分定义了一个名称为componentName的项目元素,缺省的任务为"core"任务,根目录为当前目录。componentName表示组件的名称,这里指EJB的名称。   
  40.   
  41.   
  42.   
  43. 初始化    
  44. <target name="init">   
  45. …   
  46. </target>   
  47. 讲解:此部分用于初始化所有的变量   
  48.   
  49. <property file="../../build.properties" />   
  50. 讲解:导入项目根目录下build.properties中的全局变量,开发人员也可以在此文件中重新定义全局变量。   
  51.   
  52. <property name="jboss.lib" value="${jboss.home}/lib" />     
  53. <property name="jboss.client" value="${jboss.home}/client" />     
  54. <property name="jboss.deploy" value="${jboss.home}/server/${jboss.configuration}/deploy" />     
  55. …   
  56. <property name="jboss.dir"      value="${jboss.home}" />     
  57. …   
  58. <property name="deploy.ormi"     value=""/>     
  59. <property name="deploy.username" value=""/>     
  60. <property name="deploy.password" value=""/>   
  61. 讲解:定义和Jboss Application Server有关的变量,包括lib目录、client目录、   
  62. deploy目录和J2EE Application部署要用到的一些变量。   
  63.   
  64. <property name="name"  value="componentName"/>     
  65. 讲解:定义组件的名称   
  66.   
  67. <property name="src.dir" value="${basedir}/src"/>     
  68. 讲解:定义源代码目录路径   
  69.   
  70. <property name="etc.dir" value="${basedir}/etc"/>     
  71. 讲解:定义资源目录路径   
  72.   
  73. <property name="lib.dir" value="${basedir}/lib"/>     
  74. 讲解:定义库目录路径   
  75.   
  76. <property name="build.dir" value="${basedir}/build"/>     
  77. 讲解:定义build目录路径   
  78.   
  79. <property name="src.main.dir" value="${src.dir}/main"/>   
  80. 讲解:定义源代码的主目录路径   
  81.   
  82. <property name="src.ejb.dir" value="${src.main.dir}/ejb"/>     
  83. 讲解:定义存放EJB的源代码目录路径   
  84.   
  85. <property name="src.javabean.dir" value="${src.main.dir}/javabean"/>   
  86. 讲解:定义存放JavaBean的源代码目录路径   
  87.   
  88. <property name="src.servlet.dir" value="${src.main.dir}/servlet"/>   
  89. 讲解:定义存放Servlet的源代码目录路径   
  90.   
  91. <property name="src.web.dir" value="${src.main.dir}/web"/>     
  92. 讲解:定义存放WEB部分文件(包括JSP程序、HTML文件、图片、CSS文件、JS脚本等)的目录路径   
  93.   
  94. <property name="javadoc.dir" value="${lib.dir}/docs/api"/>    
  95. 讲解:定义存放组件API的开发文件目录路径   
  96.   
  97. <property name="ejb-classes.dest" value="${lib.dir}/ejb"/>     
  98. 讲解:定义存放EJB的编译代码目录路径   
  99.   
  100. <property name="javabean-classes.dest" value="${lib.dir}/javabean"/>     
  101. 讲解:定义存放JavaBean的编译代码目录路径   
  102.   
  103. <property name="web-classes.dest" value="${lib.dir}/web/WEB-INF/classes" />   
  104. 讲解:定义WEB目录的类目录路径   
  105.   
  106. <property name="web-lib.dest" value="${lib.dir}/web/WEB-INF/lib" />     
  107. 讲解:定义WEB目录的库目录名称   
  108.   
  109. <property name="pkg-dist.name" value="${name}-pkg"/>     
  110. 讲解:定义压缩文档的名称   
  111.   
  112. <property name="ProjectName.components.home" value="../../components" />     
  113. 讲解:定义项目的组件目录路径   
  114.   
  115. <!-- Define componentName Component -->   
  116. 讲解:这段为注释,说明以下是定义当前组件的变量   
  117.   
  118. <property name="ProjectName.componentName.name" value="componentName"/>   
  119. 讲解:定义当前组件的名称   
  120.   
  121. <property name="ProjectName.componentName.home" value="${ProjectName.components.home}/componentName"/>   
  122. 讲解:定义当前组件的目录路径   
  123.   
  124. <property name="ProjectName.componentName.classbindir"    
  125. value="${ProjectName.componentName.home}/lib/ejb"/>   
  126. 讲解:定义当前组件的EJB编译目录路径   
  127. <property name="ProjectName.componentName.ejbjar"    
  128. value="${ProjectName.componentName.home}/build/componentName-ejb.jar"/>   
  129. 讲解:定义当前组件内的EJB包的路径   
  130.   
  131. <property name="ProjectName.componentName.ejbjar.client"    
  132. value="${ProjectName.componentName.home}/build/componentName-ejb-client.jar"/>   
  133. 讲解:定义当前组件内的EJB客户端包的路径   
  134.   
  135. <!-- Define referencesComponentName Component -->   
  136. 讲解:这段为注释,说明以下是定义引入其它组件的变量   
  137.   
  138. <property name="ProjectName.referencesComponentName.name"    
  139. value="referencesComponentName"/>   
  140. 讲解:定义指定组件的名称   
  141.   
  142. <property name="ProjectName.referencesComponentName.home"    
  143. value="${ProjectName.components.home}/referencesComponentName"/>   
  144. 讲解:定义指定组件的目录路径   
  145.   
  146. <property name="ProjectName.referencesComponentName.classbindir"    
  147. value="${ProjectName.referencesComponentName.home}/lib/ejb"/>   
  148. 讲解:定义指定组件的EJB编译目录路径   
  149.   
  150. <property name="ProjectName.referencesComponentName.ejbjar"    
  151. value="${ProjectName.referencesComponentName.home}  
  152. /build/referencesComponentName-ejb.jar"/>   
  153. 讲解:定义指定组件内的EJB包的路径   
  154.   
  155. <property name="ProjectName.referencesComponentName.ejbjar.client"    
  156. value="${ProjectName.referencesComponentName.home}  
  157. /build/referencesComponentName-ejb-client.jar"/>   
  158. 讲解:定义指定组件内的EJB客户端包的路径   
  159.   
  160. <property name="build.classpath"    
  161. value="${jboss.client}/jboss-j2ee.jar:${jboss.client}  
  162. /jnp-client.jar:${jboss.client}/jnp-client.jar:${jboss.client}  
  163. /jbossmq-client.jar:${jboss.client}/jbosssx-client.jar:${jboss.client}  
  164. /concurrent.jar:${jboss.client}/jaas.jar:${jboss.lib}  
  165. /jboss-jmx.jar:${jboss.home}/server/${jboss.configuration}  
  166. /lib/jbosssx.jar:${jboss.home}/server/${jboss.configuration}  
  167. /lib/mail.jar:${servlet-lib.path}:${ejb-classes.dest}:  
  168. ${web-classes.dest}:${ProjectName.componentName.classbindir}:  
  169. ${ProjectName.componentName.ejbjar.client}:  
  170. ${ProjectName.referencesComponentName.classbindir}:  
  171. ${ProjectName.referencesComponentName.ejbjar.client}" />   
  172. 讲解:定义classpath,编译bean时要用到。这是定义classpath的一种方法,下面还有另一种方法。   
  173.   
  174. 定义classpath    
  175. <!-- ================================================================== -->     
  176.   <!-- Define the classpath for compile the component                     -->   
  177.   <!-- ================================================================== -->     
  178.   <path id="base.path">     
  179.       <pathelement location="${jboss.client}/jboss-j2ee.jar" />     
  180.       <pathelement location="${jboss.client}/jnp-client.jar" />     
  181.       <pathelement location="${jboss.client}/jbossmq-client.jar" />     
  182.       <pathelement location="${jboss.client}/jbosssx-client.jar" />     
  183.       <pathelement location="${jboss.client}/concurrent.jar" />    
  184.       <pathelement location="${jboss.client}/jaas.jar" />     
  185.       <pathelement location="${jboss.lib}/jboss-jmx.jar" />     
  186.       <pathelement    
  187. location="${jboss.home}/server/${jboss.configuration}/lib/jbosssx.jar" />     
  188.       <pathelement    
  189. location="${jboss.home}/server/${jboss.configuration}/lib/mail.jar" />     
  190. </path>     
  191. 讲解:此段定义应用服务器中包文件,如支持ejb的jboss-j2ee.jar、支持客户端程序的jnp-client.jar、jbossmq-client.jar、jbosssx-client.jar、支持JavaMail的mail.jar等。   
  192.   
  193.    <path id="project.path">     
  194.       <path refid="base.path"/>   
  195.       <pathelement location="${ProjectName.componentName.classbindir}"/>   
  196.       <pathelement location="${ProjectName.componentName.ejbjar.client}"/>   
  197.       <pathelement   
  198. location="${ProjectName.referencesComponentName.classbindir}"/>   
  199.       <pathelement location="${ProjectName.referencesComponentName.ejbjar.client}"/>   
  200.    </path>     
  201. 讲解:此段定义项目中要用到的包文件。   
  202.   
  203.    <path id="web.path">   
  204.          <path refid="project.path"/>   
  205.          <pathelement location="${servlet-lib.path}"/>   
  206.          <pathelement location="${ejb-classes.dest}"/>   
  207.    </path>   
  208. 讲解:此段定义在编译servlet时的classpath,${ servlet-lib.path }是系统指定的Servlet引擎包。   
  209.   
  210. 为编译作准备工作    
  211. <!--=============================================================== -->     
  212.    <!-- Removes all created files and directories                      -->     
  213.    <!-- ============================================================== -->     
  214.    <target name="clean" depends="init">     
  215.       <delete dir="${lib.dir}" />     
  216.       <delete dir="${build.dir}" />     
  217.    </target>   
  218. 讲解:清除build、lib目录下的所有文件和目录。   
  219.   
  220.    <!-- ================================================================ -->     
  221.    <!-- Makes sure the needed directory structure is in place              -->     
  222.    <!-- ================================================================ -->     
  223.    <target name="prepare" depends="init,clean">     
  224.       <mkdir dir="${lib.dir}" />     
  225.       <mkdir dir="${lib.dir}/ejb" />     
  226.       <mkdir dir="${lib.dir}/ejb/META-INF" />     
  227.       <mkdir dir="${lib.dir}/web" />     
  228.       <mkdir dir="${lib.dir}/web/WEB-INF" />     
  229.       <mkdir dir="${lib.dir}/web/WEB-INF/classes" />     
  230.       <mkdir dir="${lib.dir}/web/WEB-INF/lib" />     
  231.       <mkdir dir="${lib.dir}/j2ee" />     
  232.       <mkdir dir="${lib.dir}/META-INF" />     
  233.       <mkdir dir="${lib.dir}/docs/api" />   
  234.       <mkdir dir="${build.dir}" />     
  235.    </target>     
  236. 讲解:创建build中要用到的所有目录,根据需要可以加入自定义的目录如:   
  237.       <mkdir dir="${lib.dir}/javabean/ " />   
  238.   
  239. 编译EJB部分   
  240. <!-- ================================================================ -->     
  241.    <!-- Compilation of the EJB part of the application                     -->     
  242.    <!-- ================================================================ -->     
  243.    <target name="ejb-classes" depends="prepare">     
  244.       <javac srcdir="${src.ejb.dir}"     
  245.              destdir="${ejb-classes.dest}"     
  246.              includes="com/**"     
  247.              classpathref="base.path" />   
  248.    </target>     
  249. 讲解:此小段用来完成编译ejb和其它help classes。根据需要可以加入一个非常有用的元素:   
  250.              encoding="${javac.encoding}"  
  251.   
  252.    <target name="ejb-meta-inf" depends="prepare">     
  253.       <copy file="${etc.dir}/ejb-jar.xml"     
  254.             tofile="${lib.dir}/ejb/META-INF/ejb-jar.xml" />     
  255.       <copy file="${etc.dir}/jaws.xml"     
  256.             tofile="${lib.dir}/ejb/META-INF/jaws.xml" />     
  257.       <copy file="${etc.dir}/jboss.xml"     
  258.             tofile="${lib.dir}/ejb/META-INF/jboss.xml" />     
  259.       <copy file="${etc.dir}/jbosscmp-jdbc.xml"     
  260.             tofile="${lib.dir}/ejb/META-INF/jbosscmp-jdbc.xml" />     
  261.    </target>   
  262. 讲解:此小段用来拷贝EJB部署文件,在JAS中EJB部署文件有jaws.xml、jboss.xml、jbosscmp-jdbc.xml。   
  263.   
  264.    <target name="ejb-jar" depends="ejb-classes,ejb-meta-inf">     
  265.       <jar jarfile="${build.dir}/${name}-ejb.jar"     
  266.            basedir="${lib.dir}/ejb" />     
  267.    </target>     
  268. 讲解:此小段用来把class和部署文件压缩成包文件,这个包文件就是一个EJB组件。   
  269.   
  270.    <target name="ejbclientjar" depends="ejb-jar,web-classes">   
  271.       <copy    
  272. file="${ProjectName.referencesComponentName.home}/build/  
  273. ${ProjectName.referencesComponentName.name}-ejb-client.jar"     
  274.           tofile="${build.dir}/${ProjectName.referencesComponentName.name}  
  275.           -ejb-client.jar" />     
  276.       <jar jarfile="${build.dir}/${name}-ejb-client.jar"     
  277.            basedir="${lib.dir}/ejb"  
  278.            excludes="com/ProjectName/componentName/ejb/ComponentNameEJB.class" />     
  279.    </target>   
  280. 讲解:此小段用来把class和部署文件压缩成包文件,以支持客户端运行。   
  281.   
  282. 编译WEB部分   
  283. <!-- ================================================================== -->     
  284.    <!-- Compilation of the web part of the application                     -->     
  285.    <!-- ================================================================== -->     
  286.    <target name="web-classes" depends="prepare,ejb-jar">     
  287.       <javac srcdir="${src.servlet.dir}"     
  288.              destdir="${lib.dir}/web/WEB-INF/classes"     
  289.              includes="com/**"     
  290.              classpath="${build.classpath}" />     
  291.    </target>     
  292. 讲解:此小段用来完成编译servlet。   
  293.   
  294.    <target name="web-web-inf" depends="prepare">   
  295.       <copy file="${etc.dir}/jboss-web.xml"     
  296.             tofile="${lib.dir}/web/WEB-INF/jboss-web.xml" />     
  297.       <copy file="${etc.dir}/web.xml"     
  298.             tofile="${lib.dir}/web/WEB-INF/web.xml" />     
  299.    </target>   
  300. 讲解:此小段用来拷贝WEB部署文件,在JAS中WEB部署文件有jboss-web.xml。   
  301.   
  302.    <target name="war" depends="web-classes,web-web-inf">     
  303.       <copy todir="${lib.dir}/web" >   
  304.        <fileset dir="${src.web.dir}"/>   
  305.       </copy>   
  306.       <copy   
  307. file="${build.dir}/${ProjectName.referencesComponentName.name}-ejb-client.jar"     
  308. tofile="${lib.dir}/web/WEB-INF/lib/${ProjectName.referencesComponentName.name}  
  309. -ejb-client.jar" />       
  310.      <jar jarfile="${build.dir}/${name}-web.war"     
  311.            basedir="${lib.dir}/web" />     
  312.    </target>   
  313. 讲解:此小段用来把所有的JSP程序、Html、Css、图片和部署文件等压缩成WAR文件。   
  314.   
  315. 编译J2EE Application   
  316. <!-- ================================================================== -->     
  317.    <!-- Compilation of the complete J2EE application (both web and EJB)    -->     
  318.    <!-- ================================================================== -->     
  319.    <target name="j2ee-meta-inf" depends="prepare">     
  320.       <copy file="${etc.dir}/application.xml"     
  321.             tofile="${lib.dir}/j2ee/META-INF/application.xml" />     
  322.    </target>     
  323. 讲解:此小段用来拷贝Application的部署文件。   
  324.   
  325.    <target name="ear" depends="ejb-jar,war,j2ee-meta-inf">     
  326.       <copy file="${build.dir}/${name}-ejb.jar"     
  327.             tofile="${lib.dir}/j2ee/${name}-ejb.jar" />     
  328.       <copy file="${build.dir}/${name}-web.war"     
  329.             tofile="${lib.dir}/j2ee/${name}-web.war" />     
  330.       <jar jarfile="${build.dir}/${name}.ear"     
  331.            basedir="${lib.dir}/j2ee" />     
  332.    </target>     
  333. 讲解:此小段用来把EJB组件、支持客户端运行的包和部署文件压缩成EAR文件,它就是一个J2EE Application。这里要说明,在进行build时,根据需要可以不生成EAR文件。   
  334.   
  335. 部署Application   
  336. <!-- ================================================================ -->   
  337.    <!-- Deploy EAR file                                                   -->   
  338.    <!-- ================================================================ -->   
  339.    <target name="deploy-server" depends="ear,war">     
  340.       <copy todir="${jboss.deploy}">     
  341.          <fileset dir="${build.dir}" includes="*.ear">     
  342.          </fileset>     
  343.       </copy>     
  344.    </target>     
  345. 讲解:此小段用来部署Application,在JAS3.0中${jboss.deploy}是JAS的热部署目录。   
  346.   
  347. 创建组件的API   
  348. <!-- =================================================================== -->   
  349.    <!-- Create class and package usage pages                                -->   
  350.    <!-- =================================================================== -->   
  351.    <target name="docs" depends="init">   
  352.     <javadoc locale="${javadoc.locale}" packagenames="${package.names}.${name}.*"     
  353.              destdir="${javadoc.dir}"     
  354.              classpath="${build.classpath}"  
  355.              encoding="${javadoc.encoding}"  
  356.              author="${javadoc.author}"  
  357. version="${javadoc.version}"    
  358. use="${javadoc.usage}"     
  359.              windowtitle="${project.name} ${name} Component API"  
  360.              doctitle="${project.name} ${name} Component"     
  361.              bottom="Copyright ${sign.copyright} ${project.date}   
  362. ${company.signature}. All Rights Reserved.">     
  363. <classpath >   
  364.         <pathelement path="${lib.dir}/ejb"/>     
  365.       </classpath>   
  366.       <sourcepath>   
  367.         <pathelement path="${src.main.dir}/ejb"/>   
  368.       </sourcepath>   
  369.     </javadoc>   
  370.    </target>   
  371. 讲解:此小段用来创建组件的API。这里强烈要求类设计人员和编码人员按照Javadoc定义的标签对源代码进行注释。   
  372.   
  373.   
  374.   
  375. 确定build的目标   
  376. <target name="startbanner">   
  377.       <echo>+---------------------------------------+</echo>   
  378.       <echo>+    Building ${name} Component         +</echo>   
  379.       <echo>+---------------------------------------+</echo>   
  380.    </target>   
  381.    <target name="endbanner" depends="main" >   
  382.       <echo>+---------------------------------------+</echo>   
  383.       <echo>+    Finished ${name} Component         +</echo>   
  384.       <echo>+---------------------------------------+</echo>   
  385.    </target>   
  386.    <target name="main" depends="startbanner, ejb-jar, ejbclientjar" />   
  387.    <target name="main2" depends="startbanner, ejb-jar,  
  388. ejbclientjar,war" />   
  389.    <target name="main3" depends="startbanner, ejb-jar,   
  390. ejbclientjar,war,ear,deploy-server" />   
  391.    <target name="core" depends="ejb-war" />   
  392.    <target name="ejb-war" depends="main2,endbanner" />   
  393.    <target name="deploy" depends="main3,endbanner" />   
  394.    <target name="all" depends="core, docs" />   
  395. 讲解:此小段用来确定build的目标。缺省目录为core,所以在build不加参数时,系统将只生成jar文件和war文件。如果 build时加上参数,系统将根据需要来生成文件,例如:在命令行输入ant deploy,系统将生成jar文件、war文件、ear文件,同时将ear文件进行部署。   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值