| |
用Ant和Eclipse有效地提高部署效率 |
|
时间: 2006-05-30 来自:ibm |
 |
|
Ant 中使用 property(属性)文件
刚开始写 Ant 的初学者可能会把所有的信息都放在
build.xml 中,下面就是这样的一个例子。
<project name="testBuild" default="compile" basedir=".">
<target name="init">
<mkdir dir="c:/temp/dest/testProj" />
</target>
<target name="compile" depends="init">
<javac srcdir="c:/temp/src/testProj" destdir="c:/temp/dest/testProj "/>
<echo>Build into c:/temp/dest/testProj, successfully.</echo>
</target>
</project>
| 在上面的例子中,所有的路径信息都是写在 build.xml 中。但是 Ant
脚本可能在不同的机器或者不同的系统上运行,也有可能一些值需要根据环境的不同而变化,在 Ant 中可以把所有这些可能变化的地方都放到一个配置文件中,然后在 Ant
脚本中引用这个配置文件就可以了,针对上面的例子,如下所示:
<project name="testBuild" default="compile" basedir=".">
<property file="build.properties"/>
<target name="init">
<mkdir dir="${dest.dir}" />
</target>
<target name="compile" depends="init">
<javac srcdir="${src.dir}" destdir="${dest.dir}"/>
<echo>Build into ${dest.dir}, successfully.</echo>
</target>
</project>
build.properties的内容:
dest.dir=c:/temp/dest/testProj
src.dir=c:/temp/src/testProj
| 如果想在 Ant
脚本中引用值的话,只需用$符号开头,在一对"{}"中写入要引用的键值。如上例中,需要引用编译的目标路径用"${dest.dir}"。
使用
Ant 任务从 CVS 中检出(check out)源代码,并编译打包
Ant 中提供了 cvs 任务(Task)可以从 CVS
服务器中检出资源(注意:在使用 Ant 的 cvs 任务之前,请先将 cvs.exe 下载到你的机器,并且将它添加到你本地的 PATH 环境变量中,然后重新启动
Eclipse。否则在执行下面脚本的时候就会得到 error=2 的错误)。cvs 的可选用属性很多,在这里介绍经常使用到的几个属性。从 CVS
中检出资源一般需要指定:
- CVS 所在的服务器地址:目标 CVS 服务器地址
- 用户名:登录该 CVS 服务器你指定的用户名
- 密码:登录该 CVS 服务器需要的密码
- 库路径(Repository Path):服务器中的库路径
- 模块名:当前需要检出的模块名,一般都是以工程的名字作为模块名
- 标签名:需要从 CVS 中检出哪个标签
在介绍使用 Ant 的 cvs 之前,先说一下本地的目录结构。在 C 盘的 temp
目录下,分别有四个目录,如下所示:
- build 目录:放编译后的类以及资源文件
- dist 目录:放生成的 jar 文件或者 war 文件
- lib 目录:放在编译过程中需要用到的 jar 文件
- src 目录:放从 cvs 中检出的源文件(包括 JSP 等)
在 Ant
中这样写就可以从中检出资源:
<cvs cvsRoot=":pserver:username:pwd@cvs.server:/home/testPath"
package="TestProj" dest=" c:/temp/src/testProj " failonerror="true" />
| 这段脚本片断的意思就是从叫"cvs.server"的服务器中,用用户名是
username、密码为 pwd 的用户检出在库路径是 /home/testPath 下的 TestProj 模块(项目),检出后的资源放入本地目录
c:/temp/src/testProj
中。在上面这段脚本中,可以看到有很多值可能会根据不同的环境或者用户随之改变的,比如用户名和密码等;而且从脚本的重复可利用性来说,需要把有些值抽出来放到配置文件中,如服务器的地址和库路径等。因此把这些可能需要更改的地方放到
property 文件中,效果会更好。改完后的完整 Ant 脚本如下所示:
<?xml version="1.0"?>
<project name="testWeb" default="checkout" basedir=".">
<target name="checkout">
<property file="TestWeb.properties" />
<cvs cvsRoot="${cvs.root}" package="${cvs.projectName}"
tag="${cvs.tag}" dest="${src.dir}" failonerror="true" />
</target>
</project>
| 对应的 TestWeb.properties 文件内容如下所示:
base.dir=c:/temp/
src.dir=${base.dir}/src
cvs.server=cvs.server
cvs.user=username
cvs.pw=pwd
cvs.repositoryPath=/home/testPath
cvs.projectName=TestProj
cvs.root=:pserver:${cvs.user}:${cvs.pw}@${cvs.server}:${cvs.repositoryPath}
cvs.tag=
| 在检出了资源后,需要对其进行编译打包。为了使 Ant
脚本更加具有可读性和灵活性,我们需要对上面的 Ant 脚本进行一些改动。首先将 Ant 脚本中进行分段,如下所示:
<?xml version="1.0"?>
<project name="testWeb" default="all" basedir=".">
<target name="all" depends="init,clean,checkout,build">
<!--脚本的入口点-->
</target>
<target name="init">
<!--做初始化属性文件和设置classpath等设置初始条件-->
</target>
<target name="clean">
<!--删除上一次留下的没用的目录和文件-->
</target>
<target name="checkout">
<!--从CVS中检出资源-->
</target>
<target name="build">
<!--编译源文件并打包到指定的目录-->
</target>
</project>
| 上面的脚本中,总共分成了5个目标(target),脚本的入口点是"all",all
按顺序调用 init,clean,checkout,build。其中:
- init 是用来做初始化属性文件和设置 classpath 等设置初始条件的事情
- clean 用来删除上一次留下的没用的目录和文件
- checkout 已经介绍过了,是用来从 CVS 中检出资源
- build 用来编译源文件并打 WAR 包到指定的目录
详细的 Ant 脚本可以参见随本文所附的 TestWeb.xml 和
TestWeb.properties。
|
|
|
|
|
|
标签NewsAbout错误:Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
|
|
|
|
|
|