Jenkins系列之-—06 Ant构建

1、Ant 简介&构建环境

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

2、目录说明

bin--是ant的程序运行入口,若是没有配置ANT_HOME的状况下,能够经过bin目录中的bat程序进行运行build任务。oracle

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

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

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

3、Ant之build.xml配置详解

  • project

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

  • property

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

  • target

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

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

 
  • echo

控制台显示

  • MacroDef 

——“宏”,在Ant中是很是实用的,它的做用至关于java里面的为防止代码重复而提取的公共方法。

须要注意的是:

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

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

  • 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/

4、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>

5、应用

应用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脚本批量执行

相关文章
相关标签/搜索