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
二、目录说明
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任务中。
官网使用手册(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构建的更多相关文章
- 【06】Jenkins:Gitlab 自动触发构建以及钉钉通知
写在前面的话 在某些时候,我们希望能够实现这样一个功能,当用户提交东西到 gitlab 上的时候,希望它能够自动触发构建,发布到我们需要的环境. 目前我们内部有做类似的需求:产品提交原型到 gitla ...
- Jenkins系列——使用checkstyle进行代码规范检查【升级版】
1.背景 在<Jenkins系列——使用checkstyle进行代码规范检查>一文中完成了ant实现代码规范检查的例子.但存在以下缺陷: 每个作业都需要配置一个不同的checkstyle ...
- Ant构建原理及build.xml文档描述
最近在改写jmeter,用到ant构建,记录一下. Ant的概念Make命令是一个项目管理工具,而Ant所实现功能与此类似.像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant ...
- jenkins系列(11)-自动打tag升级篇
很久以前,小怪分享过一篇jenkins自动打tag的文章(jenkins系列1--自动打tag),经过在项目实战和改进,我们升级了方案,现在和大家分享.,希望大家在工作中能够用起来. 使用步骤: 1. ...
- jenkins系列(9)--插件之Archive The Artifacts
点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是 ...
- Jenkins系列——使用SonarQube进行代码质量检查
1.目标 之前已经写过一篇关于Jenkins和SonarQube的一篇博客<jenkins集成sonar>,本文在参考前文的基础上,做了详细的补充. 使用SonarQube进行代码质量检查 ...
- Jenkins系列之-—01 简介&新建任务
一.Jenkins 简介 Jenkins是一个可扩展的持续集成引擎. 主要用于: l 持续.自动地构建/测试软件项目.l 监控一些定时执行的任务. Jenkins拥有的特性包括: l 易于安装-只要把 ...
- Ant 构建 Jmeter脚本报错详解
在搭建Ant构建Jmeter脚本的时候,小组成员遇到了各种问题. 再这里总结一下,遇到类似问题的可以做个参考 1.提示 does not exist 解决方案: 出现这种的问题原因有很多. 先排除权限 ...
- 【Tomcat 源码系列】源码构建 Tomcat
一,前言 这篇博客写于 12 月 12 日,从 github[1] 上 fork 了一份 tomcat 的源代码,clone 到了本地.最近想把 tomcat 的源代码分析一下,寒假的时候有完整的时间 ...
随机推荐
- [笔记]BFS算法的python实现
#!/usr/bin/env python # -*- coding:utf-8 -*- graph = {} graph["you"] = ["alice", ...
- docker容器为什么可以跨平台部署
docker镜像和操作系统没关系,docker最大的价值就是提出了镜像打包技术.首先你的明白什么是docker,什么是镜像,什么是容器,然后你就能明白镜像和操作系统之间的关系.docker是一个引擎, ...
- 算法golang篇
1.slice反转,偏移 func reverse(s []int) { , len(s) - ; i < j; i, j = i+, j- { s[i], s[j] = s[j], s[i] ...
- layer弹窗在键盘按回车将反复刷新
条件:弹窗后不做任何点击操作或者聚焦操作对于layer.load,弹出后反复按回车,load层将不断刷新,即使设置了自动消失也只有等不按回车键才会生效.对于layer iframe层有表单就更糟糕 ...
- C++中使用Curl和JsonCpp调用有道翻译API实现在线翻译
使用C++开发一个在线翻译工具,这个想法在我大脑中过了好几遍了,所以就搜了下资料,得知网络上有很多翻译API,这里我选择我平时使用较多的有道翻译API进行在线翻译工具开发的练习.翻译API返回的结果常 ...
- 【bzoj1002】[FJOI2007]轮状病毒 矩阵树定理+高精度
题目描述 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图所示 N轮状病 ...
- win 7 取得最高权限
以管理员身份运行cmd,然后输入: net user administrator /active:yes 然后注销,就会看到你原来的用户已经是最高权限的用户了.以后做的操作都是最高权限的操作.
- python object与dict互相转换
代码如下 # 将class转dict,以_开头的属性不要 def props(obj): pr = {} for name in dir(obj): value = getattr(obj, name ...
- 三读bootmem【转】
转自:http://blog.csdn.net/lights_joy/article/details/2704788 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 11 ...
- 随机生成指定长度字符字符串(C语言实现)
相关函数 srand(), rand()头文件#include<stdlib.h> 定义函数 int rand(void) 函数说明 rand()会返回一随机数值,范围在0至RAND_MA ...