热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Eclipse中使用ANT

Eclipse中使用ANT
前言

  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-INFclasses下,另外,你的web文件夹下,事先得放好web.xml,以及一些tld文件哟。
推荐阅读
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 本文介绍了Hive常用命令及其用途,包括列出数据表、显示表字段信息、进入数据库、执行select操作、导出数据到csv文件等。同时还涉及了在AndroidManifest.xml中获取meta-data的value值的方法。 ... [详细]
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
author-avatar
手机用户2502896257
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有