会写代码,能做项目,最后却不会打包和部署,这是一件非常囧的事情。。 于是,ant的学习开始了。这里要吐槽一下百度,搜索结果常常令朕虎躯一震,原则上,点开的网页排版差的一
会写代码,能做项目,最后却不会打包和部署,这是一件非常囧的事情。。
于是,ant的学习开始了。这里要吐槽一下百度,搜索结果常常令朕虎躯一震,原则上,点开的网页排版差的一律不看,抄袭抄不全的也一律不看,程序猿也是有脾气的,哈哈。
之前看过的maven,解决依赖包的问题比较爽快,这里要感谢下伟大的apache。
跟当初在linux下学习makefile一知半解的情况相比,再看ant,ant并不是什么特别高端的东西,有maven的话,我可能还是会用maven,因为ant的build文件实在是......长。
废话一大堆,附上自己的build.xml做个纪念,基本上都在注释里写好了用法。
1 <?xml version="1.0" encoding="utf-8"?>
2 <project default="main" basedir=".">
3 <!-- main可以指定入口target, 默认target可立即执行java入口main函数 -->
4 <!-- 常用路径配置 -->
5 <property name="src.dir" value="src" />
6 <property name="report.dir" value="report" />
7 <property name="classes.dir" value="classes" />
8 <property name="lib.dir" value="lib" />
9 <property name="dist.dir" value="dist" />
10 <property name="doc.dir" value="doc"/>
11 <property name="main-class" value="com.linxus.main.Main"/>
12 <property name="user.name" value="Linxus"/>
13 <!-- 第三方库路径 -->
14 <path id="classpath">
15 <fileset dir="${lib.dir}">
16 <include name="*.jar"/>
17 </fileset>
18 </path>
19
20 <!-- 入口 -->
21 <target name="main" depends="clean, compile, pack" description="Main target"> <!-- 按依赖的target顺序依此执行 -->
22 <echo>Finished Building the .jar file.</echo>
23 </target>
24
25 <!-- 清除旧版本 -->
26 <target name="clean" description="Clean">
27 <delete dir="${dist.dir}" />
28 <delete dir="${classes.dir}" />
29 <echo>Clean up Old Files.</echo>
30 </target>
31
32 <!-- 编译 -->
33 <target name="compile" description="Compilation target">
34 <mkdir dir ="${basedir}/classes"/>
35 <javac srcdir ="${basedir}/src" destdir ="${basedir}/classes" classpathref="classpath" optimize="true">
36 <compilerarg line="-encoding UTF-8 "/><!-- 解决编译时的编码问题 -->
37 </javac>
38 </target>
39
40 <!-- 打包 -->
41 <target name="pack" description="Compression target">
42 <mkdir dir ="${dist.dir}"/>
43 <!-- 这里解决依赖第三方库的问题,MANIFEST.MF文件的CLASS-PATH是需要你自己去指定的,不能偷懒
44 否则就是 ☞CLASSNOTFOUNDEXCEPTION -->
45 <pathconvert property ="libs.project" pathsep =" ">
46 <mapper>
47 <chainedmapper>
48 <!-- 移除绝对路径 -->
49 <flattenmapper />
50 <!-- 第三方库通常放在lib下。理由在↑ -->
51 <globmapper from ="*" to ="lib/*" />
52 </chainedmapper>
53 </mapper>
54 <path>
55 <!-- 第三方库的路径 -->
56 <fileset dir ="${lib.dir}" >
57 <include name ="**/*.jar"/>
58 </fileset>
59 </path>
60 </pathconvert>
61
62 <!-- 打包时间的生成 -->
63 <tstamp>
64 <format property="buildtime" pattern="yyyy-MM-dd" />
65 </tstamp>
66
67 <jar destfile="${dist.dir}/JServer-${buildtime}.jar" basedir="${basedir}/classes">
68 <!-- log4j配置文件 -->
69 <fileset dir="${src.dir}">
70 <include name="log4j.properties" />
71 </fileset>
72 <manifest>
73 <!-- 作者个人信息 -->
74 <attribute name="Built-By" value="${user.name}" />
75 <attribute name="Built-Time" value="${buildtime}" />
76 <attribute name="Main-Class" value="${main-class}"/>
77 <attribute name="Class-Path" value="${libs.project}"/>
78 </manifest>
79 </jar>
80 </target>
81
82 <!-- run -->
83 <target name="run" description="Run target">
84 <java classname ="com.linxus.main.Main">
85 <classpath>
86 <pathelement path="${basedir}/classes/com/linxus/main"/>
87 </classpath>
88 </java>
89 </target>
90 </project>