Eclipse中Ant的使用
1.查看eclipse中ant插件的版本
进入eclipse安装目录的plugins文件夹下,可以看到对应ant插件的版本(不止ant,其他的插件的版本也同样可以看到):
2.demo-TestTomcat(就利用之前的testTomcat项目搞)
在根目录下新建build.xml(名字可以改,但是一般都是这个),之后的目录为:
build.xml右键Run as Ant Build,运行之后如下图:
3.build.xml的示例
下边就是一个完整的build.xml,然后我们来详细的解释每一句:
<?xml version="1.0" encoding="UTF-8" ?>
<project name="TestTomcat" default="run" basedir=".">
<property name="src" value="src"/>
<property name="dest" value="classes"/>
<property name="testAnt_jar" value="testAnt.jar"/>
<target name="init"><mkdir dir="${dest}"/>
</target>
<target name="compile" depends="init"><javac srcdir="${src}" destdir="${dest}"/>
</target>
<target name="build" depends="compile"><jar jarfile="${testAnt_jar}" basedir="${dest}"/>
</target>
<target name="run" depends="build"><java classname="com.zd.ant.TestAnt" classpath="${testAnt_jar}"/>
</target>
<target name="clean"><delete dir="${dest}" /><delete file="${testAnt_jar}" />
</target>
<target name="rerun" depends="clean,run"><ant target="clean" /><ant target="run" />
</target>
</project>
解释:
<?xml version="1.0" encoding="UTF-8" ?>
build.xml中的第一句话,没有实际的意义;
<project name="TestTomcat" default="run" basedir=".">
</project>
ant的所有内容必须包含在这个里边,name是你给它取的名字,basedir故名思意就是工作的根目录 .代表当前目录。default代表默认要做的事情。
<property name="src" value="src"/>
类似程序中的变量,name为src,值为src,表示src目录:
<target name="compile" depends="init"><javac srcdir="${src}" destdir="${dest}"/>
</target>
把你想做的每一件事情写成一个target ,它有一个名字,depends是它所依赖的target,在执行这个target 例如这里的compile之前ant会先检查init是否曾经被执行过,如果执行过则直接直接执行compile,如果没有则会先执行它依赖的target例如这里的init,然后在执行这个target :
编译:
<target name="compile" depends="init"><javac srcdir="${src}" destdir="${dest}"/>
</target>
做jar包:
<target name="build" depends="compile"><jar jarfile="${testAnt_jar}" basedir="${dest}"/>
</target>
运行:
<target name="run" depends="build"><java classname="com.zd.ant.TestAnt" classpath="${testAnt_jar}"/>
</target>
为了不用拷贝,我们可以在最开始定义好目标文件夹,这样ant直接把结果就放在目标文件夹中;
新建文件夹:
<target name="init"> <mkdir dir="${dest}"/>
</target>
为了更多一点的功能体现,又加入了两个target
删除生成的文件:
<target name="clean"><delete dir="${dest}" /><delete file="${ testAnt_jar }" />
</target>
再次运行,这里显示了如何在一个target里边调用其他的target;
<target name="rerun" depends="clean,run"><ant target="clean" /><ant target="run" />
</target>
4.更多信息-标签
1.project
每个构建文件都有一个project标签,有以下属性:
- default:表示默认的运行目标,这个属性是必须的。
- basedir:表示项目的基准目录。
- name:表示项目名。
- description:表示项目的描述。
2.target
任务,一个project标签下有一个或多个target标签,代表任务,任务间可以存在依赖关系。有如下属性:
- name:用于标识,这个是必须的
- depends:用来指定所依赖的任务。
<!-- 初始化任务 -->
<target name="init"> <echo message=" init ${init} ..."/>
</target> <!-- 编译 -->
<target name="compile" depends="init"> <delete dir="${classes.dir}" /> <mkdir dir="${classes.dir}" /> <javac srcdir="${src.dir}" destdir="${classes.dir}"> <classpath refid="master-classpath" /> </javac>
</target>
3.delete
删除文件或文件目录,有如下属性
- file:删除文件
- dir:删除目录
- includeEmptyDirs:值得是否删除空目录,默认是true
- failonerror:报错是否停止,默认是true
- verbose:是否列出删除的文件,默认是false
<!--clean other dir--><target name="clean_other_dir"><echo message="begin clean_other_dir..."/><delete dir="${basedir}/${compress.dir}"/><delete dir="${basedir}/pub"/><echo message="begin clean html module-xx..."/><delete includeemptydirs="true"><fileset dir="${basedir}/src/html" ><include name="**/module-*/**"/></fileset></delete><echo message="begin clean res/module-xx、component-xx、res-base..."/><delete includeemptydirs="true"><fileset dir="${basedir}/res" ><include name="module-*/**"/><include name="component-*/**"/><include name="res-base/**"/></fileset></delete></target>
4.copy
拷贝文件或文件目录,属性如下:
- file:表示源文件。
- tofile:表示目标文件。
- todir:表示目标目录。
- overwrite:是否覆盖目标文件,默认为false。
- includeEmptyDirs:是否拷贝空目录,默认为true。
- failonerror:如目标没有发现是否自动停止,默认值true。
- verbose:是否显示详细信息,默认值false。
<target name="cp"><copy todir="${compress.dir}" overwrite="true"><fileset dir="${ob_baseline.dir}"><include name="pub/" /><include name="res/" /><include name="mail_template/" /></fileset></copy>
</target>
5.import
引入别的xml文件,提高复用性:
<import file="./env-judge.xml"/>
<import file="./tasks.xml"/>
6.类似于常量,可以供给build.xml中的其他标签使用。有两个特点:
- 大小写敏感
- 不可改变,谁先设定,之后的都不能改变。
该标签可以与多个属性配合使用。
- name和value:
<property name="module_name" value="admin"/>
后面直接使用即可:
<echo message="begin nej-build ${module_name}..."/>
- name和refid:
<property name="srcpath" refid="dao.compile.classpath"/>
其中的dao.compile.classpath在别的地方进行了定义。当然,也可以通过直接引用的方式:
<property name="baseline.dir" value="${ob_baseline.dir}"/>
- name和location:
<property name="srcdir" location="src"/>
将srcdir的值设置为当前文件路径/src。
- file:
<property file="./omad/build.properties"/>
导入相对文件中的所有变量,这里的build.properties专门用来存放各种变量;
•environment:
<property environment="env"/>
设置系统的环境变量前缀为env。比如
<property name="tomcat.home" value="${env.CATALINA_HOME}"/>
将系统的tomcat安装目录设置到tomcat.home属性中。
(更多信息可以参考:
https://wenku.baidu.com/view/695488d676eeaeaad1f330ab.html?from=search)
Eclipse中Ant的使用相关推荐
- 在Eclipse中集成Ant编程之配置篇
提要:本文将向你展示如何使用Eclipse设置为Ant所用的属性值和环境变量,并简要分析如何配置Ant编辑器以便从Eclipse内部操作Ant文件. 一. 修改Ant Classpath 在使用一个可 ...
- Eclipse中使用Ant
前言:虽然在eclipse中使用比较简单,但是在这里也进行简单整理. 现在Eclipse对Ant已经进行了集成,在Eclipse中也可以对Ant工具进行定制. 选择Window->Prefere ...
- Eclipse中10个最有用的快捷键组合
一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升. 1. ctrl+shift+r:打开资源 这可能 ...
- 在Eclipse中使用Maven构建Spring项目
最新版的Spring需要使用Maven构建,本文讲述怎么在Eclipse构建Maven项目,以配置Spring项目为例. maven简单介绍 maven是构建工具,也是构建管理工具.ant只是构建工具 ...
- OSGI企业应用开发(二)Eclipse中搭建Felix运行环境
上篇文章介绍了什么是OSGI以及使用OSGI构建应用的优点,接着介绍了两款常用的OSGI实现,分别为Apache Felix和Equinox,接下来开始介绍如何在Eclipse中使用Apache Fe ...
- Openfire3.9.3源代码导入eclipse中开发配置指南
软件版本: Eclipse:eclipse-jee-indigo-SR2-win32-x86_64 JDK: 1.7 Openfire: 3.9.3 本文将图文介绍如何把openfire(以3.9.3 ...
- 在Eclipse中写第一个hibernate小例子
在hibernate自带的文档中,包含了一个很简单的小例子,不过这个小例子是基于ant的,而且说的不是很详细,不利于新手学习.在这里,我将在Eclipse中实现这个例子,并给出详细的实现步骤. ...
- Tomcat8源码编译及导入Eclipse中研究
最近因为需求需要修改Tomcat中的某些功能,无奈只能研究那部分源码然后稍作修改. 目前Tomcat最新版是8.0,下载了源码包,编译并导入Eclipse中研究比较方便. 1. Tomcat8源码编译 ...
- floodlight java_floodlight学习系列(1)——在Eclipse中安装运行floodlight
环境:ubuntu 16.04 前提:已经成功安装了JDK和Ecplise 1.安装floodlight apt-get install build-essential default-jdk ant ...
最新文章
- jquery-- json字符串没有自动包装为 json对象
- 【Android 插件化】Hook 插件化框架 ( Hook 实现思路 | Hook 按钮点击事件 )
- [转]加班,加班,加班
- 无人自助便利店采用射频识别技术 30秒钟就能完成付款
- 土财主休闲威客-可行性分析(评测)
- Docker笔记(基础篇)
- MAR DASCTF 2021
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day8】 —— Redis2
- 计算机上无线网络开关在哪里,笔记本无线网络开关在哪里?
- linux系统键盘被锁定,Unix系统键盘失效等问题讲解
- excel单元格斜线_excel常用操作大全(建议收藏)
- BULK INSERT如何将大量数据高效地导入SQL Server(转)
- Java 贪吃虫小游戏
- 第5章 网站前台-活动与招聘
- doraemon的python 函数与装饰器(哎呀,忘记传了)
- UCAS - AI学院 - 知识图谱专项课 - 第8讲 - 课程笔记
- 【Android系统源码修改】修改系统默认定位方式
- php 实现邮件定时发送,PHP实现邮件的自动发送
- 第一个Python爬虫
- html yy直播,YY开播怎么捕捉窗口屏幕?设置直播范围介绍