论文部分内容阅读
摘要:介绍在基于WSL开发过程中,如何使用ANT工具开发脚本来自动构建和部署应用程序,从而帮助团队实现开发J2EE大型项目的编译部署工作自动化和规范化。
关键词:Ant;部署;XML
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)23-00721-03
Using Ant To Achieve Building and Deployment
ZHOU Hong
(Topsthink Software Company, Fuzhou 350003, China)
Abstract: This paper introduced that how to use the ANT to automatically build and deploy applications in the development process Based on WSL, and helping the team who develop large-scale J2EE projects to achieve compiler and deployment of automated and standardized.
Key words: ANT; deploy; XML
1 引言
做为一个J2EE项目的测试人员,当项目开发的规模越来越大,越来越繁重时,每次都重新编译,打包,测试,部署等一些操作都变得非常复杂而重复。虽然有IDE编程开发工具可以实现这些操作,但每次开启jbuilder这样的工具实在费时。
而Ant正是这样一个令构建工作变得简单的工具,您不用不断的使用javac、copy、cd、 java指令来达成这些目的,只要撰写好构建文件(buildfile),一个以XML组织的文件档案,之后,最简单的情况下,您只要下达ant指令,所有的一切就可以完成。
Ant是Apache的Jakarta项目的一部分,它集成了java、javac、JAR、WAR和其他一些Java任务。它也支持多种文件系统任务,获得了操作系统无关性。在Windows下编写的脚本也可以在Solaris下工作得很好。
2 ANT工具的安装
如果是基于WSL开发,只要客户端安装了bea weblogic platform就有ant工具了,将它的路径“C:\bea\weblogic81\server\bin”写到环境变量path里,就可以在cmd窗口里直接执行了。
ANT的安装也可以从Apache的网站下载:http://ant.apache.org,目前最新的版本是ANT1.6.2。当然你的机子首先已经安装上了JDK,并且设置了JAVA_HOME等这些纯Java的设置了。然后再设置ant的环境变量。
3 Ant的运行
没有指定任何参数时,Ant会在当前目录下查询build.xml文件。如果找到了就用该文件作为buildfile。如果你用 -find 选项。Ant就会在上级目录中寻找buildfile,直至到达文件系统的根。要想让Ant使用其他的buildfile,可以用参数 -buildfile file,这里file指定了你想使用的buildfile。你可以用Ant -help命令查看ant运行各项参数说明。
可以指定执行一个或多个target。当省略target时,Ant使用标签的default属性所指定的target。
4 Ant的构建文件的开发
当开始一个新的项目时,首先应该编写Ant构建文件。构建文件定义了构建过程,并被团队开发中每个人使用。Ant构建文件默认命名为build.xml,也可以取其他的名字。只不过在运行的时候把这个命名当作参数传给Ant。构建文件可以放在任何的位置。
Ant构建文件是XML文件。每个构建文件定义一个唯一的项目(Project元素)。每个项目下可以定义很多目标(target元素),这些目标之间可以有依赖关系。当执行这类目标时,需要执行他们所依赖的目标。
下面是一个示例。
<?xml version="1.0"?>
<project name="trMytest" default="Mytest" basedir=".">
<property name="src" value="src/trMytest"/>
<property name="build" value="classes"/>
<property name="lib" value="lib"/>
<property name="jarname" value="ejbMytest.jar"/>
<property name="warname" value="trMytest.war"/>
<property name="earname" value="earMytest.ear"/>
<property name="appname" value="earMytest"/>
<property name="web_inf" value="DEFAULTROOT/WEB-INF"/>
<property name="meta_inf" value="META-INF"/>
<property name="app" value="../../app"/>
<property file="../../config.properties"/>
<target name="init" depends="clean">
<mkdir dir="${build}"/>
<mkdir dir="${lib}"/>
</target>
<target name="clean">
<delete dir="${build}"/>
<delete dir="${lib}"/>
<delete file="${jarname}"/>
<delete file="${warname}"/>
<delete file="${earname}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${build}">
<classpath>
<pathelement location="${mainpath}/wwcom/wwcom.jar"/>
<fileset dir="${mainpath}/add-packet">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>
<target name="jar" depends="compile">
<mkdir dir="${build}/META-INF"/>
<copy todir="${build}/META-INF">
<fileset dir="${meta_inf}"/>
</copy>
<jar jarfile="${jarname}" >
<fileset dir="${build}"/>
<fileset dir="${meta_inf}"/>
</jar>
</target>
<target name="war" depends="compile">
<war destfile="${warname}" webxml="${web_inf}/web.xml">
<classes dir="${build}"/>
</war>
</target>
<target name="ear" depends="war,jar">
<ear destfile="${earname}" appxml="application.xml">
<fileset dir="." includes="*.jar,*.war"/>
</ear>
<copy file="${earname}" todir="${app}"/>
</target>
<target name="deploy" depends="ear">
<taskdef name="wldeploy" classname="weblogic.ant.taskdefs.manage ment.WLDeploy"/>
<wldeploy action="deploy"
source="${earname}"
name="${appname}"
adminurl="${adminurl}"
user="${username}"
password="${password}"
targets="${server}"
upload="true"
debug="true"/>
</target>
<target name="Mytest" depends="deploy"/>
</project>
示例中引用了一个属性文件config.properties,是用来描述开发环境的信息的。config.properties编写示例如下:
mainpath=D:/webback/app
adminurl=t3://localhost:7001
server=myserver
username=weblogic
password=weblogic
将上述两个文件放在同级目录下,在该目录中运行ant,就可以自动完成Mytest的编译、打包和部署。当然你也可以只运行一个target,如:ant deploy,只完成部署。
5 让大型应用的部署变得容易
如果一次将所有的组件都部署该怎么做?分开运行每个build.xml脚本文件很麻烦。我们可以为应用创建一个运行所有Ant构建脚本的Ant构建脚本。这个脚本将应用中所有的脚本组合在一起。我们定义一个all目标,他本身没用具体功能,只是调用所有的依赖。主构建脚本一般放在源程序的根目录下。进入那个根目录运行"ant"命令,整个项目的所有组件都会被部署。
6 结束语
此文介绍了如何使用Ant来构建和部署WAR、EJB和EAR文件到WLS上,以及如何使用一个主构建脚本来管理您的项目。建议对于每个EJB都将JAR文件的编译和构建放到一个单独的build.xml中,公共部分可以移动到主构建脚本中。将这些构建脚本集成到项目版本控制系统中,同源代码一样被受控,这对项目管理是非常的益的。
参考文献:
[1](美)海特.使用Ant进行Java开发[M].北京:电子工业出版社,2005.
[2](美)Mark Artiges. BEA WebLogic Server 8.1大全[M].袁毅,译.北京:机械工业出版社,2005.
关键词:Ant;部署;XML
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)23-00721-03
Using Ant To Achieve Building and Deployment
ZHOU Hong
(Topsthink Software Company, Fuzhou 350003, China)
Abstract: This paper introduced that how to use the ANT to automatically build and deploy applications in the development process Based on WSL, and helping the team who develop large-scale J2EE projects to achieve compiler and deployment of automated and standardized.
Key words: ANT; deploy; XML
1 引言
做为一个J2EE项目的测试人员,当项目开发的规模越来越大,越来越繁重时,每次都重新编译,打包,测试,部署等一些操作都变得非常复杂而重复。虽然有IDE编程开发工具可以实现这些操作,但每次开启jbuilder这样的工具实在费时。
而Ant正是这样一个令构建工作变得简单的工具,您不用不断的使用javac、copy、cd、 java指令来达成这些目的,只要撰写好构建文件(buildfile),一个以XML组织的文件档案,之后,最简单的情况下,您只要下达ant指令,所有的一切就可以完成。
Ant是Apache的Jakarta项目的一部分,它集成了java、javac、JAR、WAR和其他一些Java任务。它也支持多种文件系统任务,获得了操作系统无关性。在Windows下编写的脚本也可以在Solaris下工作得很好。
2 ANT工具的安装
如果是基于WSL开发,只要客户端安装了bea weblogic platform就有ant工具了,将它的路径“C:\bea\weblogic81\server\bin”写到环境变量path里,就可以在cmd窗口里直接执行了。
ANT的安装也可以从Apache的网站下载:http://ant.apache.org,目前最新的版本是ANT1.6.2。当然你的机子首先已经安装上了JDK,并且设置了JAVA_HOME等这些纯Java的设置了。然后再设置ant的环境变量。
3 Ant的运行
没有指定任何参数时,Ant会在当前目录下查询build.xml文件。如果找到了就用该文件作为buildfile。如果你用 -find 选项。Ant就会在上级目录中寻找buildfile,直至到达文件系统的根。要想让Ant使用其他的buildfile,可以用参数 -buildfile file,这里file指定了你想使用的buildfile。你可以用Ant -help命令查看ant运行各项参数说明。
可以指定执行一个或多个target。当省略target时,Ant使用标签的default属性所指定的target。
4 Ant的构建文件的开发
当开始一个新的项目时,首先应该编写Ant构建文件。构建文件定义了构建过程,并被团队开发中每个人使用。Ant构建文件默认命名为build.xml,也可以取其他的名字。只不过在运行的时候把这个命名当作参数传给Ant。构建文件可以放在任何的位置。
Ant构建文件是XML文件。每个构建文件定义一个唯一的项目(Project元素)。每个项目下可以定义很多目标(target元素),这些目标之间可以有依赖关系。当执行这类目标时,需要执行他们所依赖的目标。
下面是一个示例。
<?xml version="1.0"?>
<project name="trMytest" default="Mytest" basedir=".">
<property name="src" value="src/trMytest"/>
<property name="build" value="classes"/>
<property name="lib" value="lib"/>
<property name="jarname" value="ejbMytest.jar"/>
<property name="warname" value="trMytest.war"/>
<property name="earname" value="earMytest.ear"/>
<property name="appname" value="earMytest"/>
<property name="web_inf" value="DEFAULTROOT/WEB-INF"/>
<property name="meta_inf" value="META-INF"/>
<property name="app" value="../../app"/>
<property file="../../config.properties"/>
<target name="init" depends="clean">
<mkdir dir="${build}"/>
<mkdir dir="${lib}"/>
</target>
<target name="clean">
<delete dir="${build}"/>
<delete dir="${lib}"/>
<delete file="${jarname}"/>
<delete file="${warname}"/>
<delete file="${earname}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${build}">
<classpath>
<pathelement location="${mainpath}/wwcom/wwcom.jar"/>
<fileset dir="${mainpath}/add-packet">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>
<target name="jar" depends="compile">
<mkdir dir="${build}/META-INF"/>
<copy todir="${build}/META-INF">
<fileset dir="${meta_inf}"/>
</copy>
<jar jarfile="${jarname}" >
<fileset dir="${build}"/>
<fileset dir="${meta_inf}"/>
</jar>
</target>
<target name="war" depends="compile">
<war destfile="${warname}" webxml="${web_inf}/web.xml">
<classes dir="${build}"/>
</war>
</target>
<target name="ear" depends="war,jar">
<ear destfile="${earname}" appxml="application.xml">
<fileset dir="." includes="*.jar,*.war"/>
</ear>
<copy file="${earname}" todir="${app}"/>
</target>
<target name="deploy" depends="ear">
<taskdef name="wldeploy" classname="weblogic.ant.taskdefs.manage ment.WLDeploy"/>
<wldeploy action="deploy"
source="${earname}"
name="${appname}"
adminurl="${adminurl}"
user="${username}"
password="${password}"
targets="${server}"
upload="true"
debug="true"/>
</target>
<target name="Mytest" depends="deploy"/>
</project>
示例中引用了一个属性文件config.properties,是用来描述开发环境的信息的。config.properties编写示例如下:
mainpath=D:/webback/app
adminurl=t3://localhost:7001
server=myserver
username=weblogic
password=weblogic
将上述两个文件放在同级目录下,在该目录中运行ant,就可以自动完成Mytest的编译、打包和部署。当然你也可以只运行一个target,如:ant deploy,只完成部署。
5 让大型应用的部署变得容易
如果一次将所有的组件都部署该怎么做?分开运行每个build.xml脚本文件很麻烦。我们可以为应用创建一个运行所有Ant构建脚本的Ant构建脚本。这个脚本将应用中所有的脚本组合在一起。我们定义一个all目标,他本身没用具体功能,只是调用所有的依赖。主构建脚本一般放在源程序的根目录下。进入那个根目录运行"ant"命令,整个项目的所有组件都会被部署。
6 结束语
此文介绍了如何使用Ant来构建和部署WAR、EJB和EAR文件到WLS上,以及如何使用一个主构建脚本来管理您的项目。建议对于每个EJB都将JAR文件的编译和构建放到一个单独的build.xml中,公共部分可以移动到主构建脚本中。将这些构建脚本集成到项目版本控制系统中,同源代码一样被受控,这对项目管理是非常的益的。
参考文献:
[1](美)海特.使用Ant进行Java开发[M].北京:电子工业出版社,2005.
[2](美)Mark Artiges. BEA WebLogic Server 8.1大全[M].袁毅,译.北京:机械工业出版社,2005.