一、Ant 简介&构建环境

Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。由Apache软件基金会所提供

构建ant环境:

1). 安装jdk,设置JAVA_HOME ,PATH ,CLASS_PATH

2). 下载ant 地址http://www.apache.org/

3). 设置ANT_HOME, PATH中添加ANT_HOME目录下的bin目录

4). 测试验证,开始-->运行-->cmd进入命令行-->键入 ant -v

二、目录说明

bin--是ant的程序运行入口,如果没有配置ANT_HOME的情况下,可以通过bin目录中的bat程序进行运行build任务。

etc--目录中存放的都是一些xsl的输出模板,创建一个加强的导出各种任务的XML输出,使你的build文件摆脱过时的警告

lib--目录中存放的是ant程序需要依赖的jar包

manual--目录是ant程序的帮助文档

三、Ant之build.xml配置详解

  • project

每个构建文件都有一个project标签,有以下属性: 
- default:表示默认的运行目标,这个属性是必须的。 
- basedir:表示项目的基准目录。 
- name:表示项目名。 
- description:表示项目的描述

  • property

类似于常量,可以供给build.xml中的其他标签使用。有两个特点: 
- 大小写敏感 
- 不可改变,谁先设定,之后的都不能改变。

  • target

任务,一个project标签下有一个或多个target标签,代表任务,任务间可以存在依赖关系。有如下属性: 
- name:用于标识,这个是必须的 
- depends:用来指定所依赖的任务。

- if:当属性设置时才执行该任务。


  • echo

控制台显示

  • MacroDef 

——“宏”,在Ant中是非常实用的,它的作用相当于java里面的为防止代码重复而提取的公共方法。

需要注意的是:

1、在整个build文件里,<macrodef>是和<target>平级的,上例中定义的<dealWithTestCases>若不将其放在<target>里面,执行Ant时,脚本会直接执行这部分的宏代码,而不会去执行<target>中定义的‘depands="base"‘依赖关系。
2、<macrodef>可以调用其他的<macrodef>,但不可以调用<target>;<target>可用调用<macrodef>,也可用调用其他<target>。

3、所有任务的特性通过@{}展开而不是${},它们可以随宏的每一次调用而改变,且只在宏定义程序块内部可用。

  • Record

record是Ant内置任务,用于监听当前构建过程,并将输出记录到文件。可以同时存在多个record,每一个record都对应一个文件,文件名做为record的唯一标识

属性
name: 与record关联的文件名。
action:record的行为,开始记录还是停止记录。首次调用record时,如果未设置此属性,则默认为start,如果后续调用未设置,则保留之前的状态。可选值为start、stop。
append:是否追加到文件,只有任务第一次调用时有效。可选值为yes、no,默认为no。
emacsmode:是否删除日志中的[taskname],默认为false。
loglevel:日志记录的级别,随着构建过程的进行,可以更改日志级别。

  • sequential

sequential是Ant内置任务,用于包含其他的ant任务,sequential是一个容器任务。嵌套的任务按照顺序执行,sequential的主要用途是支持在并行任务中顺序执行一个子集中的任务。sequential任务没有属性,除了ant任务之外,不支持任务嵌套元素。任何有效的ant任务都可以嵌入到sequential任务中。

参考1

参考2

官网使用手册(http://ant.apache.org/manual/

Ant扩展包:ant-contrib

四、Ant build.xml中classpath

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>

五、应用

应用1:Ant构建前先执行sql脚本

<?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"

应用2:Ant实现sql脚本批量执行

Jenkins系列之-—08 自动构建之后实现SQL脚本批量执行

Jenkins系列之-—06 Ant构建的更多相关文章

  1. 【06】Jenkins:Gitlab 自动触发构建以及钉钉通知

    写在前面的话 在某些时候,我们希望能够实现这样一个功能,当用户提交东西到 gitlab 上的时候,希望它能够自动触发构建,发布到我们需要的环境. 目前我们内部有做类似的需求:产品提交原型到 gitla ...

  2. Jenkins系列——使用checkstyle进行代码规范检查【升级版】

    1.背景 在<Jenkins系列——使用checkstyle进行代码规范检查>一文中完成了ant实现代码规范检查的例子.但存在以下缺陷: 每个作业都需要配置一个不同的checkstyle ...

  3. Ant构建原理及build.xml文档描述

    最近在改写jmeter,用到ant构建,记录一下. Ant的概念Make命令是一个项目管理工具,而Ant所实现功能与此类似.像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant ...

  4. jenkins系列(11)-自动打tag升级篇

    很久以前,小怪分享过一篇jenkins自动打tag的文章(jenkins系列1--自动打tag),经过在项目实战和改进,我们升级了方案,现在和大家分享.,希望大家在工作中能够用起来. 使用步骤: 1. ...

  5. jenkins系列(9)--插件之Archive The Artifacts

    点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是 ...

  6. Jenkins系列——使用SonarQube进行代码质量检查

    1.目标 之前已经写过一篇关于Jenkins和SonarQube的一篇博客<jenkins集成sonar>,本文在参考前文的基础上,做了详细的补充. 使用SonarQube进行代码质量检查 ...

  7. Jenkins系列之-—01 简介&新建任务

    一.Jenkins 简介 Jenkins是一个可扩展的持续集成引擎. 主要用于: l 持续.自动地构建/测试软件项目.l 监控一些定时执行的任务. Jenkins拥有的特性包括: l 易于安装-只要把 ...

  8. Ant 构建 Jmeter脚本报错详解

    在搭建Ant构建Jmeter脚本的时候,小组成员遇到了各种问题. 再这里总结一下,遇到类似问题的可以做个参考 1.提示 does not exist 解决方案: 出现这种的问题原因有很多. 先排除权限 ...

  9. 【Tomcat 源码系列】源码构建 Tomcat

    一,前言 这篇博客写于 12 月 12 日,从 github[1] 上 fork 了一份 tomcat 的源代码,clone 到了本地.最近想把 tomcat 的源代码分析一下,寒假的时候有完整的时间 ...

随机推荐

  1. 异常详细信息: System.Data.SqlClient.SqlException: 用户 'NT AUTHORITY\IUSR' 登录失败解决办法

    最近在做.net项目,因为本人以前做java较多,所以对.net不熟悉,在项目完成后部署到IIS服务器上出现诸多问题,以上其中之一,若有时间,在更新其他问题的解决办法! 异常详细信息: System. ...

  2. java反射的基本使用

    反射机制是java中非常重要的功能,熟练使用反射功能对实际的开发有很大的帮助. 一,通过反射获取对象实例 使用的对象User package whroid.java.reflect; public c ...

  3. 【bzoj】P4407于神之怒加强版(莫比乌斯反演)

    题目链接 套路一般的枚举$gcd(i,j)=w$.设$min(n,m)=top$,则有 $\sum\limits_{i=1}^{n}\sum\limits_{j=1}{m}gcd(i,j)$ $=\s ...

  4. input最大长度限制问题

    <input type="text" maxlength="5" /> //可以 <input type="number" ...

  5. [转] Makefile 基础 (7) —— Makefile 中 make 的运行

    该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自 ...

  6. 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作(转)

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

  7. 挑战程序设计2 KD树

    Range Query - Range Search (kD Tree) Time Limit : 1 sec, Memory Limit : 262144 KB Japanese version i ...

  8. 【bzoj4031】[HEOI2015]小Z的房间 && 【bzoj4894】天赋 (矩阵树定理)

    来两道矩阵树模板: T1:[bzoj4031][HEOI2015]小Z的房间 Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形 ...

  9. webUpload上传插件的一些bug

    当你给上传按钮的父级或当前元素添加一个display:none时 你可能遇到了这样的一个问题.当你在点击显示这个按钮时 你发现按钮失效了 你需要点击F12才可以. flash 版本太低,请至少大于等于 ...

  10. js-html音乐播放

    <img src="images/music.png" id="music" class="rotate"> <audio ...