Apache Ant 是由 Java 语言开发的工具html
构建ant环境:java
1). 安装jdk,设置JAVA_HOME ,PATH ,CLASS_PATHsql
2). 下载ant 地址http://www.apache.org/apache
3). 设置ANT_HOME, PATH中添加ANT_HOME目录下的bin目录api
4). 测试验证,开始-->运行-->cmd进入命令行-->键入 ant -vtomcat
bin--是ant的程序运行入口,若是没有配置ANT_HOME的状况下,能够经过bin目录中的bat程序进行运行build任务。oracle
etc--目录中存放的都是一些xsl的输出模板,建立一个增强的导出各类任务的XML输出,使你的build文件摆脱过期的警告app
lib--目录中存放的是ant程序须要依赖的jar包jsp
manual--目录是ant程序的帮助文档工具
每一个构建文件都有一个project标签,有如下属性:
- default:表示默认的运行目标,这个属性是必须的。
- basedir:表示项目的基准目录。
- name:表示项目名。
- description:表示项目的描述
相似于常量,能够供给build.xml中的其余标签使用。有两个特色:
- 大小写敏感
- 不可改变,谁先设定,以后的都不能改变。
任务,一个project标签下有一个或多个target标签,表明任务,任务间能够存在依赖关系。有以下属性:
- name:用于标识,这个是必须的
- depends:用来指定所依赖的任务。
- if:当属性设置时才执行该任务。
控制台显示
——“宏”,在Ant中是很是实用的,它的做用至关于java里面的为防止代码重复而提取的公共方法。
须要注意的是:
一、在整个build文件里,<macrodef>是和<target>平级的,上例中定义的<dealWithTestCases>若不将其放在<target>里面,执行Ant时,脚本会直接执行这部分的宏代码,而不会去执行<target>中定义的‘depands="base"‘依赖关系。
二、<macrodef>能够调用其余的<macrodef>,但不能够调用<target>;<target>可用调用<macrodef>,也可用调用其余<target>。
三、全部任务的特性经过@{}展开而不是${},它们能够随宏的每一次调用而改变,且只在宏定义程序块内部可用。
record是Ant内置任务,用于监听当前构建过程,并将输出记录到文件。能够同时存在多个record,每个record都对应一个文件,文件名作为record的惟一标识
属性
name: 与record关联的文件名。
action:record的行为,开始记录仍是中止记录。首次调用record时,若是未设置此属性,则默认为start,若是后续调用未设置,则保留以前的状态。可选值为start、stop。
append:是否追加到文件,只有任务第一次调用时有效。可选值为yes、no,默认为no。
emacsmode:是否删除日志中的[taskname],默认为false。
loglevel:日志记录的级别,随着构建过程的进行,能够更改日志级别。
sequential是Ant内置任务,用于包含其余的ant任务,sequential是一个容器任务。嵌套的任务按照顺序执行,sequential的主要用途是支持在并行任务中顺序执行一个子集中的任务。sequential任务没有属性,除了ant任务以外,不支持任务嵌套元素。任何有效的ant任务均可以嵌入到sequential任务中。
官网使用手册(http://ant.apache.org/manual/)
1. classpath的设置 <property name="src" value="${basedir}/src/main/java" /> <!--定义CLASSPACH,编译时用到你外部加入的包--> <path id="classpath"> <pathelement location="${src}" /> <fileset dir="${lib}" includes="***.jar" /> <fileset dir="${tomcat.lib}"> <include name="jsp-api.jar"/> </fileset> </path> 2.classpath的使用 <javac scdir="./src" destdir="./classes"> <classpath refid="project.classpath"/> </javac>
<?xml version="1.0" encoding="UTF-8"?> <!-- ===================================================================== Author: ytliug Date: 09/29/2018 ===================================================================== --> <project name="Database" default="ConnectOracle" basedir=""> <property name="oracleDriver" value="oracle.jdbc.driver.OracleDriver"/> <property name="oracleJar" location="WebContent\WEB-INF\lib\ojdbc5.jar" /> <property name="oracleUrl" value="jdbc:oracle:thin:@10.16.55.38:1521:v7rac"/> <property name="oracleUser" value="zssys" /> <property name="oraclePassword" value="zssys123" /> <property name="encoding" value="UTF-8" /> <property name="oracleFile" value="oracle.sql" /> <target name="ConnectOracle"> <echo message="Initializing database... If error occurs,let it be." /> <sql driver="${oracleDriver}" url="${oracleUrl}" userid="${oracleUser}" password="${oraclePassword}" classpathref="classpath" encoding="${encoding}" onerror="continue" autocommit="true" print="true" <transaction src="${oracleFile}"/> <path> <fileset dir="."> <include name="data*.sql"/> </fileset> </path> <!--transaction 和path两选一 ---> </sql> </target> </project>
须要注意的是,若是你的sql文件中写的是存储过程,必定要加后面两个属性:
delimiter="/"
delimitertype="row"