4.2 自动部署ANT脚本的实现和执行
build.xml脚本的完整实现会在附录中给出,下面分解介绍典型的脚本片断:
这里定义项目名称为AutoDeployModule,它缺省执行的任务是installApp,另外这里指定本脚本引用的属性文件init.properties。属性文件用于指定服务器及工作空间等信息。
<project name="AutoDeployModule" default="installApp" basedir=".">
<property file="init.properties" />
<project name="AutoDeployModule" default="installApp" basedir=".">
<property file="init.properties" />
接下来任务ServiceDeploy实现为模块(Module)生成部署代码并打包为ear,它的运行依赖于任务jarModule,它把WID的工作空间中的模块相应目录打包为Jar。
<target name="ServiceDeploy" depends="jarModule"> <taskdef name="servicedeploy" classname="com.ibm.websphere.ant.tasks.ServiceDeployTask"/> <servicedeploy scaModule="${WorkDir}/${ModuleName}.jar" ignoreErrors="true" workingDirectory="${WorkDir}" noJ2eeDeploy="true" cleanStagingModules="true"/> </target> <target name="jarModule"> <jar destfile="${WorkDir}/${ModuleName}.jar"> <fileset dir="${ModuleDir}" excludes=".**"/> </jar> </target>
在应用服务器启用安全性的时候,需要提供用户名和密码启动,这里startServer任务可以完成此操作。
<target name="startServer"> <taskdef name="wsStartServer" classname="com.ibm.websphere.ant.tasks.StartServer"/> <wsStartServer password="${password}" server="server1" username="${username}" wasHome="${wpsHome}"/> </target>
installApp任务的执行依赖于ServiceDeploy和startServer,也就是说安装应用程序的前提为生成可部署的应用程序和启动应用服务器实例。
<target name="installApp" depends="ServiceDeploy,startServer"> <echo message="开始安装应用程序..."/> <taskdef name="wsInstallApp" classname="com.ibm.websphere.ant.tasks.InstallApplication"/> <wsInstallApp conntype="SOAP" ear="${WorkDir}\${AppName}.ear" host="${host}" password="${password}" port="${port}" user="${username}" wasHome="${wpsHome}"/> <echo message="安装应用程序完毕..."/> </target>
最后通过startApp任务启动应用程序。
<target name="startApp"> <taskdef name="wsStartApplication" classname="com.ibm.websphere.ant.tasks.StartApplication"/> <wsStartApplication application="${AppName}App" conntype="SOAP" host="localhost" password="wpiadmin" port="8880" user="wpiadmin"/> </target>
以上说明了脚本定义的主要环节。一旦流程模块开发完成,我们就可以通过以下方式运行build.xml完成打包、部署、启动服务器,安装应用程序等一系列操作。首先把编制好的build.xml拷贝到install_root/bin目录下,在操作系统提示符下运行:
ws_ant.bat(sh) –f build.xml installApp
由于build.xml为默认脚本名称,installApp为默认执行的任务,这样其实只需ws_ant命令就可运行脚本。安装完毕后,可以通过 ws_ant.bat(sh) startApp 指定执行startApp任务来启动应用程序。
注意:在<taskdef name="servicedeploy" classname="com.ibm.websphere.ant.tasks.ServiceDeployTask"/>,ServiceDeployTask的实现位于wpsanttasks.jar中,这个jar存在于install_root/lib目录下。另外,在后面我们将会用到的StartServer、InstallApplication等任务的实现也位于此目录下的wsanttasks.jar中。