Ant打包编译eclipse中的Dynamic Web Project(动态web项目)

1 篇文章 0 订阅

    本篇主要写的是用ant来打包编译一个动态的web项目,该项目是我以前写的一个测试项目,用到的框架是struts2+hibernate,前台界面很少就三个,后台的代码也不多,主要的就是回顾一下以前学过的struts2,然后练习一下刚接触的hibernate和ant。项目的结构如下:

关于struts2和hibernate的环境搭建这里就不说了,主要说的是用ant打包编译该项目。本人是第一次接触ant这个东西,用了将近一下午的时间才把这个项目给打包出来,说出来真是。。。。。。

下边的是build.xml源码:

<?xml version="1.0" encoding="UTF-8"?>
<project default="movewar" basedir=".">
	<!-- 路径信息 -->
	<property name="classes" value="build/classes"/>
	<property name="build" value="build"/>
	<property name="lib" value="WebContent/WEB-INF/lib"/>
	<property name="tomcathome" value="D:/workspace/tomcat6"></property>
	<path id="weblib">  
        <fileset dir="${lib}">
            <include name="*.jar"/>
        </fileset>  
	</path>
	
	<!-- 删除build文件夹 -->
	<target name="del" description="init target">
		<delete dir="${build}"></delete>
		<echo>删除build文件夹</echo>
	</target>
	
	<!-- 移动配置文件 -->
	<target name="movepropertity" depends="del" description="">
		<!-- 将配置文件移动到war包目录下 -->
		<copy todir="${build}/classes">
			<fileset dir="src" id="propertityfile">
    			<include name="*.xml"/>
				<include name="*.properties"/>
				<exclude name="**/*.java"/>
			</fileset>
		</copy>
		<!-- 将pojo中的hibernate配置文件移动到war包对应目录下 -->
		<copy todir="${build}/classes/com/cpw/pojo">
			<fileset dir="src/com/cpw/pojo" id="pojofile">
    			<include name="*.xml"/>
				<exclude name="**/*.java"/>
			</fileset>
		</copy>
	</target>
	
	<!-- 编译src文件夹下的java文件到classes文件夹下 -->
	<target name="compile" depends="movepropertity" description="">
		<mkdir dir="${build}/classes"/>
		<javac srcdir="src" destdir="${classes}" encoding="UTF-8" includeantruntime="on">
			<classpath refid="weblib"></classpath>
		</javac>
		<echo>编译src文件夹下的java文件到classes文件夹下</echo>
	</target>
	
	<!-- 打war包 -->
	<target name="war" depends="compile" description="">
		<war destfile="${build}/test01.war" webxml="WebContent/WEB-INF/web.xml">
			<lib dir="${lib}"/>
			<classes dir="${classes}"/>
			<fileset dir="WebContent"/>
		</war>
		<echo>打war包</echo>
	</target>
	
	<!-- 移动war包 -->
	<target name="movewar"  depends="war" description="movewar target">
		<!-- 删除tomcat下的项目文件夹和war包 -->
		<delete file="${tomcathome}/webapps/test01.war"/>
		<delete dir="${tomcathome}/webapps/test01"/>
		<!-- 移动war包 -->
		<copy todir="${tomcathome}/webapps">
			<fileset file="${build}/test01.war"></fileset>
		</copy>
		<!-- 删除原有编译的war包 -->
		<delete file="${build}/test01.war"/>
		<echo>移动war包</echo>
	</target>
</project>

对应的代码都有相对应的注释,我就说一下项目打包中遇到的问题。

1、编码问题:

xml文件写完后第一次运行就遇到了编码问题,警告:编码 GBK 的不可映射字符!我的全局编码格式是UTF-8的,不可能出现gbk编码,我就上网查了查解决方案,后来解决的方法是在<javac></javac>中添加了编码声明

encoding="UTF-8"

该问题解决!

2、jar包不存在:

编码问题解决后接着打包,又提示“软件包 XXXX 不存在”,上网查询后发现需要在<javac></javac>中添加<classpath>标签,并指明jar包的位置。于是我就用了一个<path>标签声明jar包位置,并在<javac>中添加<classpath>标签

	<path id="weblib">  
        <fileset dir="${lib}">
            <include name="*.jar"/>
        </fileset>  
	</path>

		<javac srcdir="src" destdir="${classes}" encoding="UTF-8" includeantruntime="on">
			<classpath refid="weblib"></classpath>
		</javac>

然后问题就解决了。

3、其他问题

后来打包编译没问题了,不过将war包拷贝到tomcat下后,运行的时候出问题了。原来是struts2和hibernate的配置文件没有添加到war包中,

		<!-- 将配置文件移动到war包目录下 -->
		<copy todir="${build}/classes">
			<fileset dir="src" id="propertityfile">
    			<include name="*.xml"/>
				<include name="*.properties"/>
				<exclude name="**/*.java"/>
			</fileset>
		</copy>

这段代码是将struts2和hibernate的配置文件复制到war包的目录下,后来又发现hibernate的pojo配置文件也忘了复制过去了,所以写了下边的代码

		<!-- 将pojo中的hibernate配置文件移动到war包对应目录下 -->
		<copy todir="${build}/classes/com/cpw/pojo">
			<fileset dir="src/com/cpw/pojo" id="pojofile">
    			<include name="*.xml"/>
				<exclude name="**/*.java"/>
			</fileset>
		</copy>

这样一来运行就没问题了。

经过这个项目的配置运行,对ant的使用也有了大概的了解和认识,在这里贴出来和大家一起学习学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值