因为项目需求,需要自动编译,打包源文件。通过eclipse导出功能,不能实现自动 编译,打包。
即决定用ant来完成,(ant可以通过 批处理文件调用)
因为项目架构比较特殊,有path1/src,path2/src,path3/src 多个同级源文件目录。
而且需要多个classpath目录,存放着需要用到的jar包。
在网上搜索,多是简单的ant配置,而后几经折磨,得到如下配置。
可以成功完成需求功能。
1. <?xml version="1.0" encoding="GBK" ?>
2. <!-- ===================================== -->
3. <!-- 张楠 2010/01/12 -->
4. <!-- ===================================== -->
5.
6. <!--default="clean"定义ant运行到target clean这一步结束-->
7. <project name="projectName" default="clean" basedir="D:/work/projectName">
8. <description>projectName系统发布</description>
9. <!--属性设置-->
10. <property environment="env" />
11. <property name="src.dir" value="${basedir}/src" />
12. <property name="jar.file" value="projectName.jar" />
13. <property name="java.lib.dir" value="${env.JAVA_HOME}/lib" />
14. <property name="build.dir" value="${basedir}/build" />
15. <property name="classes.dir" value="${build.dir}/classes" />
16. <property name="dist.dir" value="D:/contrib" />
17.
18. <!-- 基本编译路径设置 定义多个classpath-->
19. <path id="compile.classpath">
20. <fileset dir="${java.lib.dir}">
21. <include name="tools.jar" />
22. </fileset>
23. <fileset dir="D:/contrib">
24. <include name="*.jar" />
25. </fileset>
26. </path>
27.
28. <!-- 运行路径设置 -->
29. id="run.classpath">
30. <path refid="compile.classpath" />
31. <pathelement location="${classes.dir}" />
32. </path-->
33.
34. <!-- 排除java源文件的模式集 -->
35. <patternset id="no.java">
36. <exclude name="**/*.java" />
37. </patternset>
38.
39. <!-- 初始化,建立目录,将多个src目录复制到同一src目录,编译,打包完成后自动清除 -->
40. <target name="init" description="初始化,建立目录,复制文件">
41. <mkdir dir="${classes.dir}" />
42. <mkdir dir="${dist.dir}" />
43. <mkdir dir="${src.dir}" />
44. <copy todir="${src.dir}">
45. <fileset dir="${basedir}/path1/src">
46. <include name="**/*.java" />
47. </fileset>
48. </copy>
49. <copy todir="${src.dir}">
50. <fileset dir="${basedir}/path2/src">
51. <include name="**/*.java" />
52. </fileset>
53. </copy>
54. <copy todir="${src.dir}">
55. <fileset dir="${basedir}/path3/src">
56. <include name="**/*.java" />
57. </fileset>
58. </copy>
59. <copy todir="${src.dir}">
60. <fileset dir="${basedir}/path4/src">
61. <include name="**/*.java" />
62. </fileset>
63. </copy>
64. <copy todir="${classes.dir}">
65. <fileset dir="${src.dir}">
66. <patternset refid="no.java" />
67. </fileset>
68. </copy>
69. </target>
70. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
71. 长期推荐成都知名外企(英语好 C++ JAVA)
72. mail to:hot13399@163.com
73. [url]http://woshizn.iteye.com/blog/1195498[/url]
74. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
75. <!-- 编译源文件-->
76. <target name="compile" depends="init" description="编译源文件">
77. <javac srcdir="${src.dir}" destdir="${classes.dir}" source="1.5" target="1.5">
78. <classpath refid="compile.classpath" />
79. </javac>
80. </target>
81.
82. <!-- 打包类文件 -->
83. <target name="jar" depends="compile" description="打包类文件">
84. <jar jarfile="${dist.dir}/${jar.file}" >
85. <fileset dir="${classes.dir}" includes="**/*.*" />
86. </jar>
87. </target>
88.
89. <!-- 清理,删除临时目录 -->
90. <target name="clean" depends="jar" description="清理,删除临时目录">
91. <delete dir="${build.dir}" />
92. <delete dir="${basedir}/.settings" />
93. <delete dir="${src.dir}" />
94. <delete dir="${basedir}/bin" />
95. <echo level="info">清理完毕</echo>
96. </target>
97.
98. <!-- 从打包后jar的文件里运行 -->
99. name="runjar" depends="jar" description="运行jar">
100. <java jar="${dist.dir}/${jar.file}" fork="yes" dir="${basedir}" />
101. </target-->
102.
103. <!-- 运行 -->
104. name="run" depends="compile" description="运行">
105. <java classname="powerwind.Sample" fork="yes" dir="${basedir}">
106. <classpath refid="run.classpath" />
107. <arg line="${param.msg}" />
108. </java>
109. </target-->
110. </project>
111.
112.