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

(0)

相关推荐

  • Eclipse中使用ANT

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

  • Eclipse中导出码云上的项目方法(图文教程)

    1.菜单栏File里的import. 2.Git 3.输入码云上的地址 4.选择本地创库位置 5.再次引入本地maven项目 6.选择本地存在的创库位置,勾选上add set 以上这篇Eclipse中导出码云上的项目方法(图文教程)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • eclipse 中的javac命令与java命令

    eclipse中的javac命令与java命令 一.eclipse的javac命令:当eclipse对.java(源文件)文件进行保存操作时(快捷键ctrl+s),会执行javac命令.见上图,Default output folder(默认输出文件):为clss文件的保存位置. 二.eclipse的java命令:见上图,当选中该java文件后,执行java Application(快捷键F11)方法,会运行该class文件,如该class文件未生成,则先执行javac命令,也就是保存该java

  • 在Eclipse中运行Solr 基础知识

    Solr我还是个菜鸟,写这一些文章只是记录一下最近一段时间学习Solr的心得. Solr是什么? 最近我学Solr的时候,一直看到一句话,Solr 是一个可供企业使用的.基于 Lucene 的开箱即用的搜索服务器.当时想了很久没看懂这句话是什么意思,什么是搜索服务器?当接触的深了才发现,所谓的搜索服务器,就是能够在服务器(Tomcat,Jetty)中运行的搜索程序的一个工程. Solr能做什么? 了解过Lucene的人都知道,Lucene在做两件事情,索引管理与搜索,Solr同样也不例外,做的也

  • J2SE基础之在Eclipse中运行hello world

    步骤 1 : 打开java文件 直接打开在 命令行Hello World 中创建的java 文件 HelloWorld.java  步骤 2 : 运行 点击绿色运行按钮,直接运行 在eclipse中,编译过程自动执行了 /p>  步骤 3 : 观察运行结果 一旦运行成功,会在下方出现控制台console界面 如果找不到控制台console窗口,使用如下步骤打开控制台窗口  步骤 4 : 打开控制台窗口 打开控制台console窗口的方式 菜单-> Window -> Show View

  • Eclipse中改变默认的workspace的方法及说明详解

    eclipse中改变默然的workspace的方法可以有以下几种: 1.在创建project的时候,手动选择使用新的workspace,如创建一个web project,在向导中的Location选项,取消使用"Use default location",同时在下面选择新的workspace. 2.在file菜单中选择switch workspace项,即可选择一个新的workspace 3.在eclipse安装目录下configuration/.settings目录下的 org.ec

  • Eclipse中自动添加注释(两种)

    方法一:Eclipse中设置在创建新类时自动生成注释 windows-->preference Java-->Code Style-->Code Templates code-->new Java files 编辑它 ${filecomment} ${package_declaration} /** * @Author fufu * @Time ${date} ${time} * @Version 1.0 * <p>Description:</p> */ $

  • Eclipse中Python开发环境搭建简单教程

    一.背景介绍 Eclipse是一款基于Java的可扩展开发平台.其官方下载中包括J2EE方向版本.Java方向版本.C/C++方向版本.移动应用方向版本等诸多版本.除此之外,Eclipse还可以通过安装插件的方式进行诸如Python.Android.PHP等语言的开发. Eclipse+PyDev插件是最主流的Python开发环境了,本文将要介绍的就是使用Eclipse与PyDev插件. 二.Python安装 Python的安装共分为三个步骤:下载python.配置环境变量.测试安装成功. (1

  • 快速解决eclipse中注释的代码依然会执行的问题

    问题: eclipse中注释的代码在debug的时候居然还能执行.那一刻内心是崩溃的.. 解决方案: 项目重编译显示都正常,并没有报错,然后发现项目编译后,WEB-INF/lib/classes中的class文件并没有更新,这就好理解了,项目其实没有编译成功.然后又发现项目图标上有个感叹号.是因为在 项目右键→Properties→Libraries 中有部分jar不正确,导致项目不能编译自动生成classes. 加载一下jar项目就正常了. over.. 以上这篇快速解决eclipse中注释的

  • eclipse中运行monkeyrunner脚本之环境搭建(4)

    monkeyrunner脚本使用Python语法编写,但它实际上是通过Jython来解释执行. Jython是Python的Java实现,它将Python代码解释成Java虚拟机上的字节码并执行,这种做法允许在Python中继承一个Java类型,可以调用任意的 Java API . 本文档主要是可以实现在eclipse环境中运行Monkeyrunner脚本.所需要的环境和工具如下:win7 os.jdk.eclipse.sdk.python.jython.模拟器或真机设备. 在前两章中,我们分别

随机推荐