使用ant打包WAR,超详细教程
程序员文章站
2024-01-12 12:53:40
...
使用ant编译打成WAR包总体思路:
一、下载安装ant相关组件。
二、配置系统环境变量
三、创建build.xml
四、运行ant。
备注:由于是自己查询大量文章才完成的,如果有写得错误的希望各位指出。以下操作是在windows系统下。
详细步骤:
一、下载安装ant相关组件。
(1)这里用到的版本1.8.4是http://archive.apache.org/dist/ant/binaries/apache-ant-1.8.4-bin.zip
想了解ant的可以到官网看看:http://ant.apache.org/
(2)下载后找个路径解压,我的是D:\kfSoft\apache-ant-1.8.4-bin
二、配置系统环境变量
ant_home:D:\kfSoft\apache-ant-1.8.4-bin\apache-ant-1.8.4
PATH:D:\kfSoft\apache-ant-1.8.4-bin\apache-ant-1.8.4\bin
三、创建build.xml
我需要打包的java web路径:C:\Program Files\eclipseWCS\project\wcs-dev
所以在这个目录先创建build.xml,当然可以在别的路径。只要相对应bulid.xml里面内容的路径取对就可以。
以下是我的build.xml内容:
<?xml version="1.0" encoding="UTF-8"?>
<project name="wcs" basedir="." default="wcs">
<property name="classpath_lib" value="WebContent/WEB-INF/lib" />
<property name="tomcat_classpath_lib" value="C:/Program Files/apache-tomcat-7.0.69-windows-x64/apache-tomcat-7.0.69/lib" />
<property name="jdk_classpath_lib" location="C:/Program Files/Java/jdk1.7.0_80/lib/missioncontrol/plugins" />
<property name="eclipse_classpath_lib" location="C:/Program Files/eclipseWCS/plugins/org.junit_4.12.0.v201504281640" />
<property name="WebContent" value="." />
<target name="clean" description="清除打包用临时文件">
<delete dir="C:/Program Files/eclipseWCS/project/webapp"/>
<mkdir dir="C:/Program Files/eclipseWCS/project/webapp" />
</target>
<!-- 编译需要的lib -->
<path id="classpath">
<fileset dir="${classpath_lib}">
<include name="*.jar"/>
</fileset>
<fileset dir="${tomcat_classpath_lib}">
<include name="*.jar"/>
</fileset>
<fileset dir="${jdk_classpath_lib}">
<include name="*.jar"/>
</fileset>
<fileset dir="${eclipse_classpath_lib}">
<include name="*.jar"/>
</fileset>
</path>
<property name="debuglevel" value="source,lines,vars"/>
<property name="target" value="1.6"/>
<property name="source" value="1.6"/>
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" />
<patternset id="no.java">
<exclude name="WebContent/**/*.java" />
<exclude name="build/**/*.java" />
<exclude name="C:/Program Files/eclipseWCS/project/wcs-dev/fp.demo/**/*.java" />
</patternset>
<target name="init" depends="clean">
<property name="build" value="C:/Program Files/eclipseWCS/project/webapp"></property>
<property name="src" value="."></property>
<mkdir dir="${build}"/>
<mkdir dir="${build}/WEB-INF"/>
<mkdir dir="${build}/WEB-INF/classes"/>
<mkdir dir="${build}/WEB-INF/lib"/>
<copy todir="${build}">
<fileset dir="${basedir}/WebContent">
<include name="WEB-INF/**" />
<include name="**" />
</fileset>
</copy>
<copy todir="${build}/WEB-INF/classes">
<fileset dir="${basedir}/resources">
</fileset>
</copy>
</target>
<target name="complie" depends="init">
<javac
nowarn="on"
source="1.7"
target="1.7"
deprecation="true"
debug="true" encoding="UTF-8"
destdir="${build}/WEB-INF/classes"
classpathref="classpath" includeantruntime="on"
>
<src path="${src}/bom"/>
<src path="${src}/business.mail"/>
<src path="${src}/resources"/>
<src path="${src}/resources.i18n"/>
<src path="${src}/resources.business"/>
<src path="${src}/entity"/>
<src path="${src}/framework"/>
<src path="${src}/business.common"/>
<src path="${src}/business.management"/>
<src path="${src}/business.parammng"/>
<src path="${src}/business.product"/>
<src path="${src}/business.customer"/>
<src path="${src}/business.project"/>
<src path="${src}/business.finarpt"/>
<src path="${src}/business.credit"/>
<src path="${src}/business.loanapply"/>
<src path="${src}/business.gage"/>
<src path="${src}/business.col"/>
<src path="${src}/business.postloan"/>
<src path="${src}/business.postloanalter"/>
<src path="${src}/business.npa"/>
<src path="${src}/business.warning"/>
<src path="${src}/business.workflow"/>
<src path="${src}/business.inquiryprint"/>
<src path="${src}/business.ace"/>
<src path="${src}/business.archive"/>
<src path="${src}/business.analyze"/>
<src path="${src}/business.comm"/>
<src path="${src}/fp.demo"/>
<src path="${src}/business.grademodel"/>
<src path="${src}/business.corpcredit"/>
<src path="${src}/business.corploan"/>
<src path="${src}/business.notarizeinfo"/>
<src path="${src}/business.interface"/>
<src path="${src}/business.coupon"/>
<src path="${src}/business.questionnaire"/>
<src path="${src}/business.app"/>
</javac>
<!-- srcdir 源目录(在这里为源代码目录)destdir目标目录 即编译完成后存放class文件的目录 -->
</target>
<target name="wcs" depends="complie">
<war warfile="${build}/wcs.war" webxml="${build}/WEB-INF/web.xml">
<fileset dir="${build}"/>
</war>
</target>
</project>
需要注意的地方:
1、<project name="wcs" basedir="." default="wcs"> 这里basedir是路径,指build.xml所在路径。
前面说到build放在不同地方就要注意修改对应路径。defalut指的是target标签的name。这里一定要写好,不然会报
does not exist in the project
2、由于我的项目文件是UTF-8,不是无BOM的编码格式。所以使用jdk去编译代码时会报错。
报:编码 UTF8 的不可映射字符。解决办法是使用eclipse的jdt编译。
(1)org.eclipse.jdt.compiler.tool_1.1.0.v20150513-2007.jar、org.eclipse.jdt.core_3.11.2.v20160128-0629.jar、
org.eclipse.jdt.debug.ui_3.7.101.v20160203-1236.jar、jdtCompilerAdapter.jar-这个jar在
org.eclipse.jdt.core_3.11.2.v20160128-0629.jar里面拿出来即可。
以上3个jar在C:\Program Files\eclipseWCS\plugins。eclipse软件目录下。把他放在:D:\kfSoft\apache-ant-1.8.4-bin\apache-
ant-1.8.4\lib ant的目录下。
具体解决办法:
http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E7%9F%A5%E8%AF%86%E5%BA%93/23434.shtml
转载请注明出处:Ant编译utf-8非法字符:/65279 解决方法 - 博客园
3、<src path="${src}/bom"/> 这行指定需要编译的目录。如果不知道可以看web项目下的.classpath文件,kind="src"这个就是
所有需要编译的目录。
kind="con"这个指需要用到的jar。这里是我的项目比较特殊,一般java web项目都在src目录下。但是我的项目没有src,都是和src同级。
4、 <path id="classpath"> 这个是编译class时使用到的所有jar。classpath_lib指我项目本身用到的jar。tomcat_classpath_lib是tomcat7使用
的jar jdk_classpath_lib这个是jdk,我用的是1.7的版本。eclipse_classpath_lib是junit有些项目可能不用可以不引用。
5、<patternset id="no.java"> 本身是拿来排除不需要编译的地方。这里我没有测试。因为有些类不用的,但是编译时发现他引入的包或者继
承的类没有就是编译不过去。这样会使整个ant失败。
6、<target name="wcs" depends="complie"> 这个是打war包命令。
7、<property name="build" value="C:/Program Files/eclipseWCS/project/webapp"></property> 这个是需要打war路径。
8、<target name="init"> 这个标签是复制一些必要的文件。如果不知道要复制什么文件可以到项目的.settings下的
org.eclipse.wst.common.component用文本打开。你就知道需要复制哪些文件了。deploy-path是目标路径,source-path这个是原路
径。把source-path的文件复制到deploy-path去。
四、运行ant
(1)win+r,
打开cmd.
(2)
(3)切换到build.xm目录,如果是其他盘可以打:d:回车,在cd进目录。
(4)敲ant回车,就会运行
(5)正常的界面
注明:后续可以添加上传server服务器,自动部署。
上一篇: maven合并war包