您的位置:软件 > 开发者网络 > 开发工具 > Java > 正文
在Eclipse中使用ANT灵活构建Web应用
[文章信息]
作者:梦想飞
时间:2005-01-31
出处:天极网blog
责任编辑:方舟
[文章导读]
ant是java开发者工具箱的重要一环,junit,xdoclet等都与它紧密关联
advertisement
热点推荐
· 邮箱及IE安全设置指南
· 配置Win 2000系统中的磁盘配额
· Win XP中搜索隐藏文件的两种方法
· 用Delphi2005学设计模式之工厂方法篇
· RoboDemo 录下你的屏幕变化
[正文]
  前言

  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文件哟。


天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • Hibernate+Spring+Struts扩展Struts
  • 通过Java Swing看透MVC设计模式
  • 详细解析 JavaBeans 与 Ejb 的区别
  • Java的破解和反破解之道
  • 实战Java多线程编程之不提倡的方法
  • 信息化动向:中小企业受益于零售行业软件
  • 网上银行安全事故频发 理财反恐已刻不容缓
  • 预测:2010年世界500强中国企业将占50席
  • 正版压缩DVD上市 发行价8到10元保证品质
  • 柯达力拓中国市场 今年将推出多款数码相机
  • DVD专利收费机构遭质疑 中方要求进行调查
  • 液晶、等离子电视销售上升2倍多 选购要谨慎
  • 法院认为携程是否越位经营应由工商部门确定
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    温馨祝福|极品爆笑|生肖属相|StarQ|体育竞技|美好风光|每逢佳节
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 冲动的惩罚
    最熟悉的陌生人 绿光
    可爱女人 盛夏的果实
    当你孤单你会想起谁 孤单北半球
    2002年的第一场雪 眉飞色舞
    有多少爱可以重来 挪威的森林
    最浪漫的事 老板电话

    CSEEK搜索