分享
 
 
 

在Eclipse中使用ANT灵活构建Web应用

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

前言

ant是java开发者工具箱的重要一环,junit,xdoclet等都与它紧密关联,程序员可能习惯了IDE提供的自动构建,甚至部署的功能,从而忽略了ant本身,其实,主流的IDE通常是内置ant任务来完成这些工作的,熟悉ant内在的机理,可以阅读或简单修改build.xml无疑可以帮助你更灵活地集成、管理应用项目,如果需要学习maven这种开源项目管理解决方案,也是要以理解ant为基础的哟。另外,使用ant的过程实际上对构建进行了文档化,它是无关于IDE的,想象一下,你的同事中可能三分之一在用JbuilderX,三分之一用eclipse,还有一些是别的。

本人使用eclipse3.0.1,以前的构建和发布工作都由myeclipse插件作了,趁周末实践了一下手动构建,记此备忘。

实践

准备工作:这是我的个人习惯,把所有公用的类库jar置于一个固定目录,分好类,不要丢在一个文件夹下,如jakarta-commons、hibernate、spring、struts等,这些是源码构建时需要用到的,在部署时可能有一些不用再打进去了,比如servlet.jar。如果你们有自己的framework,也一并放在这里。然后,打开eclipse,进入Windows->Preferences->Java->User Libraries,增加一个自己的库,比如说mylib,把刚才那些公共的jar全部添入,这样有个好处,在eclipse项目中,不用再看到烦人的长长的jar列表了,比较整洁。

下来正式进行:

1.新建一个Java Project,此时就不要再选你的j2ee插件内置的一些选项了,至简即可。

2.在root下建几个文件夹,我们在网上下载的开源项目中经常可以看到这些,比如:

src - 源码

classes - 编译

web - jsp等

lib - 库,这里可以简单地把mylib下的东东copy过来,便于将来发布源码。

dlist - 输出的jar或war

当然,我们要建一个build.xml,eclipse中会出现一个蚂蚁的小图标,一般这个文件建立后,下一个项目简单的copy过去,稍加改动就可以了。

3.打开项目的属性页,在Java Build Path的库选项中,加入我们自定义的公共库mylib.至于Builders方式就不用改了,使用默认的Java Builer即可,我只是项目部署时使用ant,平常的排错工作就交给IDE吧。

4.重中之重,写你的build.xml,网上文章很海,我这里就不再?嗦了,基本上就分那几个任务:

4.1 先要声明一些路径变量,如

<property name="war.dir" value="dlist" />

也可以将其写至properties文件中,在这里引用;

4.2 声明编译的类路径,如下:

<path id="master-classpath">

<fileset dir="${lib.root}/struts">

<include name="struts-menu-2.3.jar" />

<include name="struts.jar" />

</fileset>

<fileset dir="${lib.root}/jakarta-commons">

<include name="commons-*.jar" />

</fileset>

<fileset dir="${lib.root}/ibatis2.0.9">

<include name="ibatis-*.jar" />

</fileset>

<fileset dir="${lib.root}/jdbcdriver">

<include name="jtds-0.9-rc2.jar" />

</fileset>s

......

</path>

4.3 清空输出目录,如web,dlist等。

4.4 编译构建:

<target name="build" description="Compile main source tree java files into class files, generate jar files">

<mkdir dir="${build.dir}" />

<javac destdir="${build.dir}" source="1.3" target="1.3" debug="true" deprecation="false" optimize="false" failonerror="true">

<src path="${src.dir}" />

<classpath refid="master-classpath" />

</javac>

<copy todir="${build.dir}" preservelastmodified="true">

<fileset dir="${src.dir}">

<include name="**/*.xml" />

<include name="**/*.properties" />

</fileset>

</copy>

<!-- ============================================= -->

<!-- 据测试,资源文件不能被打到jar文件中,其余均可 -->

<!-- ============================================= -->

<copy todir="${webclasses.dir}/conf" preservelastmodified="true">

<fileset dir="${src.dir}/conf">

<include name="springResources*.properties" />

</fileset>

</copy>

<mkdir dir="${weblib.dir}" />

<jar jarfile="${weblib.dir}/${name}.jar" compress="true">

<fileset dir="${build.dir}">

<include name="**" />

</fileset>

</jar>

<copy todir="${weblib.dir}" preservelastmodified="true">

<fileset dir="${lib.root}">

<include name="log4j-1.2.8.jar" />

</fileset>

<fileset dir="${lib.root}/struts">

<include name="struts-menu-2.3.jar" />

<include name="struts.jar" />

</fileset>

<fileset dir="${lib.root}/jakarta-commons">

<include name="commons-*.jar" />

</fileset>

<fileset dir="${lib.root}/spring-1.1.3">

<include name="spring.jar" />

<include name="aopalliance.jar" />

</fileset>

......

</copy>

</target>

<!-- ============================================= -->

<!-- Compile main Java sources and copy libraries -->

<!-- ============================================= -->

<target name="warfile" description="Build the web application archive">

<mkdir dir="${dist.dir}" />

<war warfile="${dist.dir}/${name}.war" basedir="${war.dir}" webxml="${war.dir}/WEB-INF/web.xml">

<include name="*" />

<include name="WEB-INF/*.*" />

<exclude name="WEB-INF/web.xml" />

<include name="WEB-INF/classes/*.*" />

<include name="WEB-INF/lib/**" />

<exclude name="**/.*" />

</war>

</target>

4.5 打成war

<target name="warfile" description="Build the web application archive">

<mkdir dir="${dist.dir}" />

<war warfile="${dist.dir}/${name}.war" basedir="${war.dir}" webxml="${war.dir}/WEB-INF/web.xml">

<include name="*" />

<include name="WEB-INF/*.*" />

<exclude name="WEB-INF/web.xml" />

<include name="WEB-INF/classes/*.*" />

<include name="WEB-INF/lib/**" />

<exclude name="**/.*" />

</war>

</target>

4.6 把几个任务串起来,弄一个default target

<target name="all">

<antcall target="clean" />

<antcall target="build" />

<antcall target="warfile" />

</target>

打完收功。在实践中发现,一些配置文件,如struts-config.xml ibatis和spring的xml都可以打进jar文件,spring资源文件好象不行,得单独copy至WEB-INF\classes下,另外,你的web文件夹下,事先得放好web.xml,以及一些tld文件哟。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有