当一个项目大了以后,每次重新编译,打包,运行就会变得复杂、费时、重复,c语言中有make脚本进行这些工作的批量完成,那么在java中,我们可以使用Ant

Ant是一个构建工具,可以完成这些任务:编译java源代码、运行java程序、拷贝文件或目录、将编译完成的类打包等等。

而且,Ant允许我们按照自己的方式,添加自己的任务(Task),比如通过Xdoclet完成项目中的hibernate文件生成。

直接使用范例,那些基础知识看来枯燥无味,我会把他们放到最后,如果例子看不明白,再去看基础知识也不迟。

使用Ant进行:j2ee项目打包发布,hibernate相关文件生成

<?xml version="1.0" encoding="GBK"?>
<project name="测试ANT"  basedir=".">  <!--资源文件位置-->  <property name="src.dir" value="${basedir}/src" />  <!--编译的目标位置-->  <property name="classes" value="${basedir}/build/classes" />  <!--打包的目标位置-->  <property name="build" value="${basedir}/build" />  <!--Lib的位置-->  <property name="lib" value="${basedir}/WebContent/WEB-INF/lib" />  <!--tomcat.webapps位置-->  <property name="webapps" value="D:/tomcate/apache-tomcat-7.0.39/webapps" />  <!--Xdoclet.Home-->  <property name="xdoclet.home" value="D:/oa/xdoclet-plugins-1.0.3" />    <!-- Build classpath 指定定lib所在位置-->  <path id="classpath">  <fileset dir="${lib}">  <include name="*.jar" />  </fileset>  </path>  <!--  删除build 路径-->  <target name="删除build 路径">  <delete dir="${build}" />  </target>  <!--  建立build/classes 路径,并编译class 文件到build/classes 路径下-->  <target name="建立build/classes 路径,并编译class 文件到build/classes 路径下" depends="删除build 路径">  <mkdir dir="${classes}" />  <javac srcdir="${basedir}/src" destdir="${classes}">  <classpath refid="classpath" />  </javac>  <copy todir="${classes}">  <fileset dir="${src.dir}">  <include name="**/*.xml" />  <include name="**/*.properties" />  </fileset>  </copy>  </target>  <!-- 打war 包-->  <target name="打war 包" depends="建立build/classes 路径,并编译class 文件到build/classes 路径下">  <war destfile="${build}/WebTest1.war" webxml="${basedir}/WebContent/WEB-INF/web.xml">  <!--  拷贝WebContent下所有文件-->  <fileset dir="${basedir}/WebContent" />  <!--  拷贝lib 目录下的jar 包-->  <lib dir="${lib}" />  <!--  拷贝build/classes 下的class 文件-->  <classes dir="${classes}" />  </war>  <delete dir="${classes}" />  </target>  <!--发布到本地tomcat-->  <target name="发布到本地tomcat" depends="打war 包">  <copy file="${build}/WebTest1.war" tofile="${webapps}/WebTest1.war" />  </target>  <!-- 下面是借助xdoclet,进行自定义任务,完成hibernate相关文件生成 --><!--
xdoclet通过对源文件进行扫描,并读取源文件中的注释,然后生成相应的配置文件,因此xdoclet有自己的一套注释规则,详细看文档。--><!-- Build classpath -->  <path id="xdoclet.task.classpath">  <fileset dir="${xdoclet.home}/lib">  <include name="**/*.jar" />  </fileset>  <fileset dir="${xdoclet.home}/plugins">  <include name="**/*.jar" />  </fileset>  </path>  <taskdef name="xdoclet" classname="org.xdoclet.ant.XDocletTask" classpathref="xdoclet.task.classpath" />  <!--生成Hibernate配置文件-->  <target name="生成Hibernate配置文件" depends="生成hibernate映射文件">  <xdoclet>  <fileset dir="${src.dir}/com/tch/model">  <include name="**/*.java" />  </fileset>  <component
classname="org.xdoclet.plugin.hibernate.HibernateConfigPlugin"
destdir="${src.dir}"
version="3.0"
hbm2ddlauto="update"
jdbcurl="jdbc:mysql://127.0.0.1/oa"
jdbcdriver="com.mysql.jdbc.Driver"
jdbcusername="root"
jdbcpassword="123456"
dialect="org.hibernate.dialect.MySQLDialect"
showsql="true"
/>  </xdoclet>  </target>  <!--生成hibernate映射文件-->  <target name="生成hibernate映射文件">  <xdoclet>  <fileset dir="${src.dir}/com/tch/model">  <include name="**/*.java" />  </fileset>  <component
classname="org.xdoclet.plugin.hibernate.HibernateMappingPlugin"
version="3.0"
destdir="${src.dir}" />  </xdoclet>  </target>  </project>  

基础

1、搭建环境

  1. 确保你的机器已经安装了JDK,确保你的path环境变量中包含有java虚拟机的运行程序,确保你的环境变量中有JAVA_HOME变量
  1. 下载ant并解压
  1. 设置ANT_HOME环境变量,指向ant解压根目录
  1. 在path环境变量中,添加%ANT_HOME%\bin目录
  2. 打开控制台,运行:ant
  3. 如果能够运行ant(忽略这些异常:Buildfile: build.xml does not exist!),而不是出现诸如命令无法解释的错误,那么你的ant就安装成功了

2、基本元素

bulid.xml

<?xml version="1.0" encoding="GBK"?>
<project name="ant测试" default="getBaseDir"  basedir="D:\antTest">  <!--基本元素-->  <target name="getBaseDir">  <description>    the first example!    </description>    <echo message="hello world!" />  </target>  <target name="targetA" if ="ant.version">    <echo message ="Java Version: ${ant.version}"/>    </target>        <target name="targetC"  depends ="targetA" unless ="anotherTarget" >    <description>    show depends,unless,basedir,if  </description>    <echo message ="The base dir is: ${basedir}"/>    </target>    <!--property-->  <property name="name" value="jim" />  <property name="age" value="18" />  <target name="targetD" >  <echo message="name:${name},age:${age}" />  </target>  <!--echo-->  <target name="targetEcho">  <echo message="Hello,ANT" file="herfile/hello.log" append="true" />   </target>
</project>  

project 元素是 Ant 构件文件的根元素, Ant 构件文件至少应该包含一个project 元素,否则会发生错误。在每个 project 元素下,可包含多个 target 元素。

1) name 属性

用于指定 project 元素的名称。

2) default 属性

用于指定 project 默认执行时所执行的target 的名称。

3) basedir 属性

用于指定基路径的位置。该属性没有指定时,使用 Ant 的构件文件的附目录作为基准目录。

target 元素

target为Ant的基本执行单元,它可以包含一个或多个具体的任务。多个target 可以存在相互依赖关系。它有如下属性:

1) name 属性

指定 target 元素的名称,这个属性在一个project 元素中是唯一的。我们可以通过指定 target 元素的名称来指定某个 target 。

2) depends 属性

用于描述 target 之间的依赖关系,若与多个target 存在依赖关系时,需要以“,”间隔。 Ant 会依照 depends 属性中 target 出现的顺序依次执行每个 target 。被依赖的 target 会先执行。

3) if 属性

用于验证指定的属性是否存在,若不存在,所在 target 将不会被执行。

4) unless 属性

该属性的功能与 if 属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在 target 将会被执行。

5) description 属性

该属性是关于 target 功能的简短描述和说明。

property 元素

property元素可看作参量或者参数的定义,project 的属性可以通过 property元素来设定,也可在 Ant 之外设定。若要在外部引入某文件,例如 build.properties 文件,可以通过如下内容将其引入:

<property file=”build.properties”/>

property 元素可用作 task 的属性值。在 task 中是通过将属性名放在“ ${”和“ } ”之间,并放在 task 属性值的位置来实现的。

3、常用命令

build.xml

<?xml version="1.0" encoding="GBK"?>
<project name="ant测试" default="getBaseDir"  basedir="D:\antTest">  <!--常用命令-->  <!--copy-->  <target name="targetCopy">  <copy file="myfile/hello.txt" tofile="herfile/copied.txt"/>   <copy todir="hisfile"> <fileset dir="myfile"/></copy>   </target>  <!--delete-->  <target name="targetDelete">  <delete file="myfile/hello.txt" />  <delete dir="myfile" />  <delete includeEmptyDirs="true">  <fileset dir="." includes="**/*.bak" />  </delete>  </target>  <!--mkdir-->  <target name="targetMkdir">  <mkdir dir="/myfile/src/build/classes"/>   </target>  <!--move-->  <target name="targetMove">  <move file="destfile.txt" tofile="hello.txt"/>   <move file="hello.txt" todir="myfile"/>   <move todir="herfile"> <fileset dir="myfile"/></move>  </target>
</project>  

copy命令用来对文件和目录的复制功能。

delete 命令对文件或目录进行删除

mkdir 命令创建目录

move 命令移动文件或目录

Ant相当的工具有MavenMaven预设了一些方便的功能,而ant只能自己写,各有自己的优势。就像hibernateIBatishibernate做了一定的封装,方便了,却失去了一定的灵活性。

java的世界太大,有许许多多的工具,为了快速进行开发,我们一定要善假于物也,对众多工具先有个了解,知道有这么回事,需要时才知道去找谁,再即用即学也不迟。

借助Ant工具,实现快速开发相关推荐

  1. Jeecg-Boot 1.1 发布,基于 SpringBoot+Ant Design 的快速开发平台

    Jeecg-Boot 1.1 版本发布,初成长稳定版本 导读                                ⊙平台首页UI升级,精美的首页支持多模式                   ...

  2. php laravel 开发工具,Laravel 快速开发工具

    laravel 开发辅助工具 安装 composer require luffyzhao/laravel-tools 配置 添加服务提供商 将下面这行添加至 config/app.php 文件 pro ...

  3. 【直播回顾】2021MAXP 公开课 3:云原生应用与快速开发

    本文为 2021 MAXP 系列公开课第三讲完整版直播回顾,由来自亚马逊云科技的资深开发者布道师黄帅老师主讲,为大家介绍云原生应用开发相关知识以及一个航班查询预订应用的快速开发案例分享. 直播视频回顾 ...

  4. 什么时候需要使用cqrs_在CQRS读取模型中使用Hibernate进行快速开发

    什么时候需要使用cqrs 在本文中,我将分享一些在CQRS读取模型中使用Hibernate工具进行快速开发的技巧. 为什么要Hibernate? Hibernate非常流行. 从外观上看,它也很容易, ...

  5. 使用Hibernate在CQRS读取模型中进行快速开发

    在这篇文章中,我将分享一些在CQRS读取模型中使用Hibernate工具进行快速开发的技巧. 为什么要休眠? 休眠非常流行. 从外观上看,它也很容易,而从内部看,它却相当复杂. 它可以很容易地开始使用 ...

  6. openjweb1.8 java web应用快速开发平台产品白皮书

    因图片较多,需要图片请到资源中下载,不需要资源分.           OpenJWeb(1.8) Java Web应用快速开发平台   产品白皮书               编者:OpenJWeb ...

  7. OpenJWeb(1.6) Java Web应用快速开发平台技术白皮书

    OpenJWeb中国开源组织(http://blog.csdn.net/baozhengw) 苏州创智科技有限公司(http://www.cmissoft.com) QQ:29803446 Msn:b ...

  8. 如何快速开发软件?这篇文章说明白了

    随着经济迅速发展,传统软件开发模式存在研发周期长.需求转化困难.投入成本高等问题,无法适应当前业务发展速度,市场需要快速开发工具.快速开发软件可分为代码生成类.少代码类.零代码功能配置类.代码生成类相 ...

  9. 10款好用的混合式快速开发工具

    HTML5标准定稿之后,影响力持续上升,在移动互联网领域爆发出了巨大的能量,HTML5与原生APP之争再次引起行业人士的广泛关注.对于开发者来说,是选择原生APP还是顺应形势接受HTML5成了一个比较 ...

最新文章

  1. C++ 指向指针的指针(多级间接寻址)
  2. larvel 中的api.php_Laravel API 系列教程(一): 基于 Laravel 5.5 构建 测试 RESTful API...
  3. [lct] Luogu P4219 大融合
  4. 【电脑帮助】解决Wind10系统spacedesk程序开机自启动的问题
  5. 8.6 归纳式迁移学习
  6. C 语言调用python 脚本函数
  7. StarUML 3 中文文档 构件图
  8. 面试技巧STAR原则
  9. R语言数学建模(1):Regression analysis
  10. AI生成的灌篮高手真人版,爷青回
  11. 摆脱处男_是时候摆脱我们的密码了
  12. 关于消息推送服务的十问十答
  13. TextInputLayout字数统计功能
  14. C++:【练习题】Project-1 The robots in a warehouse
  15. 保姆韦尔奇方法Baum-Welch
  16. jsp tomcat7 mysql_最简单的Jsp环境配置及数据库连接调试(Jdk7+Tomcat7+Mysql5.5)
  17. PS - 产品精修(洗面奶)教程
  18. 数据仓库【多维分析】
  19. Axure 中的矢量图标从哪来?
  20. 计算机网络基础知识 全

热门文章

  1. 常用HTTP状态码趣(曲)解
  2. Excel基础操作(五)--图表基础
  3. 常用经典SQL语句大全完整版--详解+实例 (存)
  4. Redis+Mysql模式和内存+硬盘模式的异同
  5. PowerShell runspace 的创建,使用和查错
  6. Subversion客户端认证凭证缓存总结
  7. Linux 终端訪问 FTP 及 上传下载 文件
  8. HDU-1299 Diophantus of Alexandria 素因子分解
  9. oracle 数据库管理员职责
  10. 有勇气的牛排 --- 安卓