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 的源代码分析一下,寒假的时候有完整的时间 ...
随机推荐
- curl 请求
一.Linux curl用法举例: . linux curl抓取网页: 抓取百度: curl http://www.baidu.com curl http://www.baidu.com 如发现乱码, ...
- 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树
题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见…… 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...
- BZOJ1499 [NOI2005]瑰丽华尔兹 【单调队列优化dp】
题目 你跳过华尔兹吗?当音乐响起,当你随着旋律滑动舞步,是不是有一种漫步仙境的惬意?众所周知,跳华尔兹时,最重要的是有好的音乐.但是很少有几个人知道,世界上最伟大的钢琴家一生都漂泊在大海上,他的名字叫 ...
- 浅谈Android反调试 之 PTRACE_TRACEME
反调试原理: 关于Ptrace: http://www.cnblogs.com/tangr206/articles/3094358.html ptrace函数 原型为: #include & ...
- Java面试题之谈谈reactor模型
reactor是什么? 事件驱动 可以处理一个或多个输入源 通过Service Handle同步的将输入事件采用多路复用分发给相应的Request Handler(一个或多个)处理 具体可参考:htt ...
- java面试题之什么是CAS
CAS,即Compare and Switch,比较-替换,里面有三个操作数:内存值V.旧的预期值A.要修改的值B: 当预期值A和内存值V相同时,才会将内存值修改为B并返回true,否则什么都不做并返 ...
- bzoj 3143 [Hnoi2013]游走 期望dp+高斯消元
[Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3394 Solved: 1493[Submit][Status][Disc ...
- bzoj3924 [Zjoi2015]幻想乡战略游戏 点分树,动态点分
[BZOJ3924][Zjoi2015]幻想乡战略游戏 Description 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网 ...
- Repeated Substrings(UVAlive 6869)
题意:求出现过两次以上的不同子串有多少种. /* 用后缀数组求出height[]数组,然后扫一遍, 发现height[i]-height[i-1]>=0,就ans+=height[i]-heig ...
- CodeForces 97D. Robot in Basement
time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standa ...