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文件进行部署。   
【SCI一区复现】基于配电网韧性提升的应急移动电源预配置和动态调度(下)—MPS动态调度(Matlab代码实现)内容概要:本文档围绕“基于配电网韧性提升的应急移动电源预配置和动态调度”主题,重点介绍MPS(Mobile Power Sources)动态调度的Matlab代码实现,是SCI一区论文复现的技术资料。内容涵盖在灾害或故障等极端场景下,如何通过优化算法对应急移动电源进行科学调度,以提升配电网在突发事件的恢复能力与供电可靠性。文档强调采用先进的智能优化算法进行建模求解,并结合IEEE标准测试系统(如IEEE33节点)进行仿真验证,具有较强的学术前沿性和工程应用价值。; 适合人群:具备电力系统基础知识和Matlab编程能力,从事电力系统优化、配电网韧性、应急电源调度等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于复现高水平期刊(SCI一区、IEEE顶刊)关于配电网韧性与移动电源调度的研究成果;②支撑科研项目的模型构建与算法开发,提升配电网在故障后的快速恢复能力;③为电力系统应急调度策略提供仿真工具与技术参考。; 阅读建议:建议结合前篇“MPS预配置”内容系统学习,重点关注动态调度模型的数学建模、目标函数设计与Matlab代码实现细节,建议配合YALMIP等优化工具包进行仿真实验,并参考文提供的网盘资源获取完整代码与数据。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值