zoukankan      html  css  js  c++  java
  • Jenkins基础篇 系列之-—06 Ant构建

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

    二、详细介绍

    2.1 目录说明

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

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

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

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

    2.2 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任务中。

    2.3 Ant之命令行

    命令行选项总结:
    ant [options] [target [target2 [target3] ...]]
    Options:
    -help          print this message
    -projecthelp    print project help information
    -version        print the version information and exit
    -quiet         be extra quiet
    -verbose       be extra verbose
    -debug      print debugging information
    -emacs     produce logging information without adornments
    -logfile      file use given file for log output
    -logger     classname the class that is to perform logging
    -listener      classname add an instance of class as a project listener
    -buildfile      file use specified buildfile
    -find       file search for buildfile towards the root of the filesystem and use the first one found
    -Dproperty=value set property to value

    参考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="WebContentWEB-INFlibojdbc5.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脚本批量执行

  • 相关阅读:
    UUID是否会重复、UUID的生成原理
    自己动手实现一个UUID
    分布式系统唯一ID生成方案
    docker命令中的启动停止命令的使用
    执行git push出现"Everything up-to-date"
    Github提交错误:Invalid username or password. fatal: Authentication failed for
    Allure安装
    git clone 时候出现Please make sure you have the correct access rights and the repository exists.问题解决
    使用fiddler,har2case 将api参数转成yaml格式
    Fiddler怎么可以抓取https的请求包
  • 原文地址:https://www.cnblogs.com/liuyitan/p/9341294.html
Copyright © 2011-2022 走看看