前言:如题所示,有时我们可能经常需要把JavaWeb项目进行编译,然后打包成war包并发布到Tomacat中进行测试。如果每次都人工进行操作的话,无疑是很麻烦的。这时我们可以通过编写一个自动化的Ant脚本,每次需要发布项目时只需要点击一下就可以完成了,非常方便
测试项目的项目结构如下:
Ant脚本build_war.xml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
project
name
=
"antwar"
default
=
"publish"
basedir
=
"."
>
<!-- 打包生成的war名字 -->
<
property
name
=
"war.name"
value
=
"Internationalisation"
/>
<!-- java源文件路径 -->
<
property
name
=
"src.dir"
value
=
"${basedir}/src"
/>
<!-- webapp路径 -->
<
property
name
=
"webapp.dir"
value
=
"${basedir}/WebContent"
/>
<!-- jar包路径 -->
<
property
name
=
"lib.dir"
value
=
"${webapp.dir}/WEB-INF/lib"
/>
<!-- 编译源文件路径 -->
<
property
name
=
"build.bin"
value
=
"${basedir}/AntBuild/bin"
/>
<!-- 准备webapp文件路径 -->
<
property
name
=
"buildwar.dest"
value
=
"${basedir}/AntBuild/warsrc"
/>
<!-- 打包war文件路径 -->
<
property
name
=
"war.dest"
value
=
"${basedir}/AntBuild/war"
/>
<!-- tomcat路径 -->
<
property
name
=
"tomcat.home"
value
=
"D:\\apache-tomcat-7.0.68"
/>
<!-- classpath -->
<
path
id
=
"classpath"
>
<
fileset
dir
=
"${lib.dir}"
>
<
include
name
=
"**/*.jar"
/>
</
fileset
>
<
fileset
dir
=
"${tomcat.home}/lib"
>
<
include
name
=
"**/*.jar"
/>
</
fileset
>
</
path
>
<!-- 初始化 -->
<
target
name
=
"init"
>
<
mkdir
dir
=
"${build.bin}"
/>
<
mkdir
dir
=
"${buildwar.dest}"
/>
<
mkdir
dir
=
"${war.dest}"
/>
<!-- 复制静态文件 -->
<
copy
todir
=
"${buildwar.dest}"
overwrite
=
"true"
>
<
fileset
dir
=
"${webapp.dir}"
>
<
exclude
name
=
"/WEB-INF/classes/**"
/>
</
fileset
>
</
copy
>
</
target
>
<!-- 编译源文件 -->
<
target
name
=
"compile"
depends
=
"init"
>
<
echo
message
=
"Build: "
/>
<
javac
srcdir
=
"${src.dir}"
destdir
=
"${build.bin}"
encoding
=
"utf-8"
includeantruntime
=
""
>
<
classpath
refid
=
"classpath"
/>
</
javac
>
<!-- 复制编译后的文件 -->
<
copy
todir
=
"${buildwar.dest}/WEB-INF/classes"
overwrite
=
"true"
>
<
fileset
dir
=
"${build.bin}"
>
<
include
name
=
"**/*.class"
/>
</
fileset
>
</
copy
>
</
target
>
<!-- 复制项目中的其他的一些资源文件 -->
<
target
name
=
"copyResource"
depends
=
"compile"
>
<
echo
message
=
"Copy resources: "
/>
<
copy
todir
=
"${buildwar.dest}/WEB-INF/classes"
overwrite
=
"true"
>
<
fileset
dir
=
"${basedir}/resources"
>
<
include
name
=
"**/*.*"
/>
</
fileset
>
</
copy
>
</
target
>
<!-- 打war包 -->
<
target
name
=
"build.war"
depends
=
"copyResource"
>
<
echo
message
=
"Build war: "
/>
<
war
warfile
=
"${war.dest}/${war.name}.war"
webxml
=
"${buildwar.dest}/WEB-INF/web.xml"
>
<
fileset
dir
=
"${buildwar.dest}"
/>
</
war
>
</
target
>
<!-- 发布到tomcat -->
<
target
name
=
"publish"
depends
=
"build.war"
>
<!-- 删除tomcat已发布的项目文件 -->
<
delete
dir
=
"${tomcat.home}/webapps/${war.name}"
/>
<
delete
file
=
"${tomcat.home}/webapps/${war.name}.war"
/>
<!-- 复制war文件到${tomcat.home}/webapps -->
<
copy
todir
=
"${tomcat.home}/webapps"
overwrite
=
"true"
>
<
fileset
dir
=
"${war.dest}"
>
<
filename
name
=
"${war.name}.war"
/>
</
fileset
>
</
copy
>
<!-- 清除临时文件 -->
<
delete
dir
=
"${build.bin}"
/>
<
delete
dir
=
"${buildwar.dest}"
/>
<
delete
dir
=
"${war.dest}"
/>
</
target
>
</
project
>
|
本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1790138,如需转载请自行联系原作者