










1
<?xml version="1.0"?>
2
3
<project basedir=".">
4
5
6
7
<property name="tomcathome" value="F:/Tomcat5.5"/>
8
9
<property name="lib.dir" value="webapp/web/WEB-INF/lib" />
10
11
<property name="deploy.destfile.jar" value="webapp/web/WEB-INF/lib/deploy-myJSF.jar" />
12
13
<property name="deploy.destdir.class" value="webapp/web/WEB-INF/classes/webapp/src/com/corejsf" />
14
15
<property name="deploy.properties.from" value="build/webapp/src/com/corejsf" />
16
17
<property name="deploy.properties.to.build" value="build/webapp/src/com/corejsf" />
18
19
<property name="deploy.properties.to.webinf" value="webapp/web/WEB-INF/classes/webapp/src/com/corejsf" />
20
21
22
23
<path id="build.classpath">
24
25
<pathelement location="${lib.dir}/commons-beanutils.jar" />
26
27
<pathelement location="${lib.dir}/commons-collections.jar" />
28
29
<pathelement location="${lib.dir}/commons-digester.jar" />
30
31
<pathelement location="${lib.dir}/commons-logging.jar" />
32
33
<pathelement location="${lib.dir}/jsf-api.jar" />
34
35
<pathelement location="${lib.dir}/jstl.jar" />
36
37
<pathelement location="${lib.dir}/standard.jar" />
38
39
</path>
40
41
42
43
<target name="clean">
44
45
<echo message="Delete work dir
"></echo>
46
47
<delete dir="work"></delete> <!--delete webapp cache-->
48
49
<delete dir="lib"></delete>
50
51
<delete dir="build"></delete>
52
53
</target>
54
55
56
57
<target name="init" depends="clean">
58
59
<echo message="Init part of this project
" />
60
61
<mkdir dir="build"/>
62
63
<mkdir dir="lib"/>
64
65
</target>
66
67
68
69
<target name="compile" depends="init">
70
71
<javac destdir="build">
72
73
<classpath refid="build.classpath"></classpath>
74
75
<src path="webapp/src"></src>
76
77
</javac>
78
79
</target>
80
81
82
83
<target name="mkjar" depends="compile">
84
85
<jar destfile="lib/myjsf.jar" basedir="build">
86
87
<manifest>
88
89
<attribute name="Build-By" value="Bill-Ant" />
90
91
</manifest>
92
93
</jar>
94
95
</target>
96
97
98
99
<target name="deploy" depends="mkjar">
100
101
<copy file="lib/myjsf.jar" tofile="${deploy.destfile.jar}"></copy>
102
103
<copy todir="${deploy.destdir.class}">
104
105
<fileset dir="build/webapp/src/com/corejsf">
106
107
<include name="*.class"/>
108
109
</fileset>
110
111
</copy>
112
113
<copy todir="${deploy.properties.to.build}">
114
115
<fileset dir="${deploy.properties.from}">
116
117
<include name="*.properties"/>
118
119
</fileset>
120
121
</copy>
122
123
<copy todir="${deploy.properties.to.webinf}">
124
125
<fileset dir="${deploy.properties.from}">
126
127
<include name="*.properties"/>
128
129
</fileset>
130
131
</copy>
132
133
</target>
134
135
136
137
<target name="runserver" depends="deploy">
138
139
<exec dir="${tomcathome}/bin" executable="${tomcathome}/bin/startup.bat" ></exec>
140
141
</target>
142
143
</project>
144
145
4.编写ANT构建文件
ANT是一个强大的开源构建工具,它可以快速地对整个WEB应用程序进行编译打包部署等工作,以目标的方式来管理不同的任务,ANT把建立一个WEB应用所需做的大量工作都集成在了一起统一地管理起来,这种方式大大地提高了应用构建的效率和灵活性.
针对本文所述的应用我编写了以下这个构建文件,文件名为build.xml:
project是整个构建文件的根,向下看就是属性定义,属性是一个名称/值对,所以property标签就有两个属性,一个是name,另一个是value,属性定义下面是path结点,这一段指定了在编译器编译的时候要用到的jar包的路径.在整个文件中有很多的${}符号,这个符号就是对属性的引用,大括号中是属性名称.
Jar包定义段之后就是各个目标的定义了,目标标签是<target>,目标标签主要用到的属性有name,depends.name指定目标的名称,depends指定目标的依赖特性,当A目标有一个depends=”B”属性是,就说明A的运行依赖于B,在运行A的时候如果没有运行B,ANT会自动地先运行B目标再运行A目标.
在这个文件中定义了6个目标.分别是:clean,init,compile,mkjar,deploy,runserver,其中clean目标用来清除产生的工作目录和过期的类和jar包.在构建前进行清理是一个好习惯.init是进行初始化,是用来建立一些在编译构建过程中需要的文件夹.compile目标就是进行JAVA文件的编译,mkjar目标是把编译后的类文件打成jar包,deploy是把编译好的类文件和jar包部署到WEB-INF中.最后一个目标就是运行TOMCAT服务器.
下面对一些用到的ANT标签进行说明:
<property name="propertyName" value="propertyValue" />:属性定义,name是属性名称,value是属性值
<javac destdir="build">
<classpath refid="build.classpath"></classpath>
<src path="webapp/src"></src>
</javac>:编译JAVA源文件,其子标签src指定要编译的源文件目录;classpath指定查找用户类文件的位置,功能与javac命令的-classpath参数相同.
<jar destfile="dest.jar" basedir="classes_dir" />:打jar包,destfile是jar包文件名,可以包含路径信息;basedir是要打包的class文件目录.也可以用下面的形式:
<jar destfile="dest.jar" basedir="classes_dir">
<manifest>
<attribute name="Built-By" value="${user.name}">
<attribute name="Main-class" value="MainClass">
</manifest>
</jar>
manifest子结点指定为jar包生成一个清单文件,manifest的子结点说明了清单文件中的内容,可见清单文件中的内容也是名称/值对.在上面定义了作者和主类.
<delete dir="${toBeDelete_dir}" /> :删除指定的目录
<mkdir dir="${buildDir}" />:新建目录
<copy file="src/test.java" tofile="src/testCopy.java" /> :复制文件并改名
<move file="src/test.java" tofile="src/testMove.java" /> :仅改名不复制(重命名)
<zip destfile=”test.zip” basedir=”toBeZipDir” />:压缩文件
<exec dir="${tomcathome}/bin" executable="${tomcathome}/bin/startup.bat" /> :执行外部文件.
把上面的构建文件内容复制到WEB应用的根目录下保存为build.xml.
5.编写BAT批处理文件
到现在为止,WEB应用程序部分就完成了.写BAT文件的目的就是把所有要进行的工作都集成起来.这一步不是必要的,但确实非常有用的.要执行本文的WEB应用可以运行如下的批处理文件:
SET ANT_HOME=F:\devSpace\Ant-1.6.2
path=%ANT_HOME%\bin
SET PATH=%PATH%
call ant -f F:\workspace\JSFWebAppEx\build.xml runserver
第一句是设置ANT的HOME目录,第二句是设置ANT.exe的目录,最后一句就是调用ANT,-f参数是指定构建文件路径.runserver是构建文件中的目标名称,因为在本文的构建文件中,runserver依赖于deploy,deploy依赖于mkjar,mkjar依赖于compile,compile依赖于init,init依赖于clean,所以在ANT.EXE中指定运行runserver时,ANT会自动地从第一个目标开始运行.
把上面的批处理文件内容保存到WEB应用的根目录下的run.bat中.
6.运行WEB应用
当TOMCAT运行起来以后就可以在浏览器中观察结果了.注意:如果不知道HTTP的端口号,那么在输入URL以前请先在%TOMCAT_HOME%\conf\server.xml中查看HTTP的端口号.然后输入http://localhost:8888/JSFApp/faces/index.jsp(假设端口号是8888,WEB应用的虚拟根目录是JSFApp).
以上就是进行一个JSF应用的步骤,是一个从什么都没有到最后看到运行页面的全过程.其实不光是JSF,其他所有的JAVA WEB应用都是类似的步骤.
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。