最近做項目需要生成war包,無奈myeclipse自動生成war包時總是一閃而過,不能生成,不知是什麼原,無奈之下自己ant生成jar包,過程中下面這篇文章幫助很大,特抄錄如下,對作者表示萬分感激:
Ant 相關的介紹我就不詳述了,網上這方面介紹還是比較多的,下面我就用一個簡單的 web 應用做示例。
附件 anttest.rar 包裏面是一個簡單的登陸應用,輸入用戶和密碼跳轉成功頁面並顯示輸入的值,這個工程是用 myeclispe 寫的,下面我就模擬實現 myeclipse 的 tomcat 發佈 web 應用,將這個應用打包到 tomcat 的 webapps 目錄下。
1.構建ant環境
1)安裝jdk,設置JAVA_HOME ,PATH ,CLASS_PATH。
2)下載ant 地址www.apache.org。
3)解壓ant 你得到的是一個壓縮包,解壓縮它
4)設置ANT_HOME PATH中添加ANT_HOME目錄下的bin目錄。
5)測試一下你的設置。開始-->運行-->cmd進入命令行-->鍵入 ant 回車,如果看到
Buildfile: build.xml does not exist!
Build failed
1.構建ant環境
1)安裝jdk,設置JAVA_HOME ,PATH ,CLASS_PATH。
2)下載ant 地址www.apache.org。
3)解壓ant 你得到的是一個壓縮包,解壓縮它
4)設置ANT_HOME PATH中添加ANT_HOME目錄下的bin目錄。
5)測試一下你的設置。開始-->運行-->cmd進入命令行-->鍵入 ant 回車,如果看到
Buildfile: build.xml does not exist!
Build failed
build.xml:
- <project basedir="." default="publish" name="anttest">
- <target name="init" description="設置初始化打 war 包需要的路徑變量">
- <property name="name" value="anttest"/>
- <property name="src" value="${basedir}/anttest/src"/>
- <property name="lib" value="${basedir}/anttest/WebRoot/WEB-INF/lib"/>
- <property name="webapp" value="${basedir}/anttest/WebRoot"/>
- <property name="packages" value="ant.*"/>
- <property name="build.src" value="${basedir}/AntBuild/anttest/src"/>
- <property name="build.dest" value="${basedir}/AntBuild/anttest/WEB-INF/classes"/>
- <property name="buildwar.dest" value="${basedir}/AntBuild/anttest"/>
- <property name="build.javadocs" value="${basedir}/AntBuild/doc"/>
- <property name="jar.dest" value="${basedir}/AntBuild/jar"/>
- <property name="war.dest" value="${basedir}/AntBuild/war"/>
- <property name="tomcat.home" value="D:\Program Files\Apache Software Foundation\Tomcat 6.0"/>
- <property name="j2eelib.dir" value="D:\Program Files\MyEclipse 6.5\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806\data\libraryset\EE_5"/>
- <path id="classpath">
- <fileset dir="${j2eelib.dir}">
- <include name="**/*.jar"/>
- </fileset>
- <fileset dir="${lib}">
- <include name="**/*.jar"/>
- </fileset>
- </path>
- </target>
- <target name="prepare" depends="init" description="創建打包需要的路徑,拷貝源文件到打包路徑下">
- <mkdir dir="${build.src}"/>
- <mkdir dir="${build.dest}"/>
- <mkdir dir="${buildwar.dest}"/>
- <mkdir dir="${jar.dest}"/>
- <mkdir dir="${war.dest}"/>
- <copy todir="${build.src}">
- <fileset dir="${src}"/>
- </copy>
- <copy todir="${buildwar.dest}">
- <fileset dir="${webapp}"/>
- </copy>
- </target>
- <target name="build" depends="prepare" description="編譯 java 文件,拷貝 properties 屬性配置文件到編譯後的路徑下">
- <javac srcdir="${build.src}" destdir="${build.dest}">
- <classpath refid="classpath"/>
- </javac>
- <copy todir="${build.dest}">
- <fileset dir="${build.src}">
- <include name="**/*.properties"/>
- </fileset>
- </copy>
- </target>
- <target name="antwar" depends="javadoc" description="打 war 包,不將 java 文件打入包內">
- <delete dir="${build.src}"/>
- <war warfile="${war.dest}/anttest.war" webxml="${buildwar.dest}/WEB-INF/web.xml">
- <lib dir="${buildwar.dest}/WEB-INF/lib"/>
- <classes dir="${build.dest}"/>
- <fileset dir="${buildwar.dest}"/>
- </war>
- </target>
- <target name="publish" depends="antwar,clean" description="發佈 war 包至 tomcat 目錄下">
- <copy todir="${tomcat.home}/webapps">
- <fileset dir="${war.dest}">
- <include name="**/*.war"/>
- </fileset>
- </copy>
- </target>
- <target name="javadoc" depends="build" description="生成 java 的 API 幫助文檔">
- <mkdir dir="${build.javadocs}"/>
- <javadoc sourcepath="${build.src}" destdir="${build.javadocs}" author="true" version="true" use="true" splitindex="true" windowtitle="${name} API" doctitle="${name}">
- <classpath refid="classpath"/>
- </javadoc>
- </target>
- <target name="clean" depends="init" description="清除打包用臨時文件">
- <delete dir="${build.src}"/>
- <delete>
- <fileset dir="${build.dest}" includes="**/*.classes"/>
- </delete>
- <delete dir="${buildwar.dest}"/>
- </target>
- </project>
注意:裏面有個 j2ee 的 jar 包目錄,如果要測試的話把這個目錄換成本機的這個目錄,然後就可以在命令行裏面到這個目錄下直接執行 ant 命令就可以看到效果了。
3.最後執行的結果如下:
D:\temp>ant
注意:裏面有個 j2ee 的 jar 包目錄,如果要測試的話把這個目錄換成本機的這個目錄,然後就可以在命令行裏面到這個目錄下直接執行 ant 命令就可以看到效果了。
3.最後執行的結果如下:
D:\temp>ant
3.最後執行的結果如下:
D:\temp>ant
注意:裏面有個 j2ee 的 jar 包目錄,如果要測試的話把這個目錄換成本機的這個目錄,然後就可以在命令行裏面到這個目錄下直接執行 ant 命令就可以看到效果了。
3.最後執行的結果如下:
D:\temp>ant