<?xml version="1.0" encoding="UTF-8"?>

<project name="projectName" default="zip" basedir=".">

<target name="setvar"> 变量的设定

<property name="build" value="build"/>

<property name="buildClass" value="${build}/classes"/>

<property name="buildDist" value="${build}/dist"/>

<property name="buildDistLib" value="${buildDist}/lib"/>

<property name="module" value="testModule"/>

<property name="lib" value="lib"/>

<property name="lastvalidatetime" value="lastvalidatetime"/>

<property name="src" value="src"/>

<path id="my-class-path"> //设置path变量

<fileset dir="${lib}" includes="*.jar"/>

</path>

<tstamp> //设置运行的时间戳变量

<format property="today" pattern="MM/dd/yyyy hh:mm aa" locale="en"/>

<format property="time" pattern="yyyyMMdd_HHmmss" locale="en"/>

<format property="date" pattern="yyyyMMdd" locale="en"/>

</tstamp>

<property name="timestamp" value="${time}"/>

<property file="build.properties"/>//引入property文件,之后可以用里面的key获取value,如:build.version=4.0

<property name="build.name" value="${module}_v${build.version}_${date}"/>

<property name="versionPath" value="/version"/>

</target>

<target name="clean" depends="setvar">

<delete dir="${build}"/>//删除build文件夹

<mkdir dir="${build}"/>//创建 build文件夹

<mkdir dir="${buildClass}"/>//创建build/classes文件夹

<mkdir dir="${buildDist}"/>//创建build/dist文件夹

<mkdir dir="${buildDistLib}"/>创建build/dist/lib文件夹

</target>

<target name="compile-classes" depends="clean"> //编译,依赖clean

    //http://ant.apache.org/manual/Tasks/javac.html

    //必须要有srcdir,除非有内嵌的<src>

<javac debug="on" deprecation="on" includeantruntime="false" source="1.6" target="1.6" destdir="${buildClass}"> //编译到build/classes

<classpath>//The classpath to use.需要依赖哪些包时

<path refid="my-class-path"/>

</classpath>

<src path="${src}"/>

</javac>

</target>

<target name="jar" depends="compile-classes">//打包jar

<jar jarfile="${build}/${module}.jar" basedir="${buildClass}"> //将编译出build/classes的class打包为build\testModule.jar

<manifest/>

</jar>

</target>

<target name="work" depends="jar">

<copy todir="${buildDistLib}">//复制文件到build/dist/lib

<fileset dir="${lib}" includes="*.jar"/> //复制文件${lib}下所有jar文件到${buildDistLib}

<fileset dir="${build}" includes="${module}.jar"/> //复制文件${build}下testModule.jar文件到${buildDistLib}

</copy>

<copy todir="${buildDist}">

<fileset dir="./" includes="*.bat,lastsynctime/*,deviceType/*,"/>//复制当前目录去.bat...到${buildDist}

</copy>

<copy todir="${buildDist}/config.default">//复制config目录去${buildDist}/config.default目录

<fileset dir="config" includes="**"/>

</copy>

<copy todir="${buildDist}" file="README.md" />

<copy todir="${buildDist}" file="init.sql" />

<copy todir="${buildDist}" file="curlTool.rar" />

<delete dir="${buildClass}"/>

<delete file="${build}/${module}.jar"/>

<property name="versionFolder" value="${buildDist}/${versionPath}"/>

<delete dir="${versionFolder}"/>

<mkdir dir="${versionFolder}"/>//创建${buildDist}/${versionPath}文件夹

<property name="fileName" value="${versionFolder}/${build.name}.txt"/>

<echo message="** Build Information ** ${line.separator}" file="${fileName}"/> //将显示信息输入到文件${fileName}换行

<echo message="Version: ${build.version}${line.separator}" file="${fileName}" append="true"/>//将显示信息输入追加到文件${fileName}换行

<echo message="Build Time: ${timestamp}${line.separator}" file="${fileName}" append="true"/>

<echo message="Java Version: ${java.runtime.version}${line.separator}" file="${fileName}" append="true"/>

<!-- MD5 info-->

<echo message="--- md5 info ---${line.separator}" file="${fileName}" append="true"/>

<checksum file="${buildDist}/${lib}/test1.jar" property="test1MD5"/> //check MD5 test1.jar 到test1MD5

<echo message="test1.jar:${test1MD5}${line.separator}" file="${fileName}" append="true"/>

<checksum file="${buildDist}/${lib}/${module}.jar" property="test2MD5"/>

<echo message="${module}.jar:${test2MD5}${line.separator}" file="${fileName}" append="true"/>

</target>

<target name="zip" depends="work">

<zip destfile="${build}/${module}.zip" basedir="${buildDist}"/> //将${buildDist}打包为${build}/${module}.zip

</target>

</project>

Ant的使用(一)的更多相关文章

  1. Jenkins 安装的HTML Publisher Plugin 插件无法展示ant生成的JunitReport报告

    最近在做基于jenkins ant  junit 的测试持续集成,单独ant junit生成的junitreport报告打开正常,使用Jenkins的HTML Publisher Plugin 插件无 ...

  2. React中使用Ant Table组件

    一.Ant Design of React http://ant.design/docs/react/introduce 二.建立webpack工程 webpack+react demo下载 项目的启 ...

  3. [Ant]Ant简易教程

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

  4. jenkins / ant / jmeter 持续集成接口自动化

    1. 将 jmeter 脚本放在/var/lib/jenkins/workspace/Jmeter_auto/jmxpath路径下 2. 点击http://jk.facebank.net.cn/job ...

  5. Maven与Ant比较

    Maven与Ant比较 0 « 上一篇:Jenkins学习三:介绍一些Jenkins的常用功能» 下一篇:Jenkins学习四:Jenkins 邮件配置 posted @ 2015-03-25 16: ...

  6. 一.Jmeter+Ant+Jenkins搭建持续集成接口性能自动化测试

    微创新作品信息 1)微创新作品描述 A.为什么诞生: 1. 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换, ...

  7. Eclipce结合Ant进行编译、打包、传输、运行

    注意: 用Ant构建时,build path只能是单级的,如默认的src,如果是类似basePath/jsr253这样的话,运行Ant build时会报错,说找不到jsr253. (此文讲述的是以an ...

  8. ant 使用指南

    一.概述 ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.在实际软件开发中,有很多地方可以用到ant. 开发环境: System:Windo ...

  9. 在Eclipse中集成Ant配置

    提要:本文将向你展示如何使用Eclipse设置为Ant所用的属性值和环境变量,并简要分析如何配置Ant编辑器以便从Eclipse内部操作Ant文件. 一. 修改Ant Classpath 在使用一个可 ...

  10. windows+ant+git+tomcat中ant直接获取git项目部署注意点

    最近项目搬迁到公司的"GitHub"上面原来的SVN的ant发布脚本要改下,于是百度ant获取git的方法太少了,windows平台上更是没有所以搞了两天,今天终于有点成果分享给大 ...

随机推荐

  1. 手写Spring框架,是时候撸个AOP与Bean生命周期融合了!

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 嘎小子,这片代码水太深你把握不住! 在电视剧<楚汉传奇>中有这么一段刘邦 ...

  2. 【剑指offer】77.调整数组顺序使奇数位于偶数前面

    77.调整数组顺序使奇数位于偶数前面 知识点:数组:快速排序:冒泡排序: 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部 ...

  3. 上手Coc.nvim 完全指南

    上手Coc.nvim 完全指南 介绍 Coc.nvim 是一个基于NodeJS 的适用于Vim8, Neovim 的Vim 智能补全插件. 拥有完整的LSP 支持.配置.使用方式及插件系统的整体风格类 ...

  4. PAT甲级:1064 Complete Binary Search Tree (30分)

    PAT甲级:1064 Complete Binary Search Tree (30分) 题干 A Binary Search Tree (BST) is recursively defined as ...

  5. Guass消元总结

    Guass消元 约旦·高斯消元法 求线性方程组 我们用一个\(n*(n+1)\)的矩阵存储线性方程组各项系数和零次项系数. 每一次找到一个未知数系数最大的方程,交换当前行方程和该方程,并将其他行该未知 ...

  6. 【洛谷P2041 分裂游戏】数学+瞎蒙

    分析 我们推不出n=3的图,开始猜测,答案在n>2时无解.(<-正解) AC代码 #include <bits/stdc++.h> using namespace std; i ...

  7. Python小白的数学建模课-12.非线性规划

    非线性规划是指目标函数或约束条件中包含非线性函数的规划问题,实际就是非线性最优化问题. 从线性规划到非线性规划,不仅是数学方法的差异,更是解决问题的思想方法的转变. 非线性规划问题没有统一的通用方法, ...

  8. SaaS技术栈有多复杂?

    [特别声明:本文基于Tools and Services I Use to Run My SaaS进行修改.] 软件SaaS化由于需要考量架构的各个方面,所以需要的技术栈非常全面. 以一个客户管理Sa ...

  9. 什么是CIDR?

    英文缩写: CIDR (Classless InterDomain Routing) 中文译名: 无类别域间路由选择 IP地址有"类"的概念,/8掩码是A类,/16掩码是B类,/2 ...

  10. 太细了!阿里十年技术专家联合打造“最新”Jetpack强化实战手册

    前言 提到Android架构,我们首先想到的是MVC,MVP,MVVM.他们主要是针对视图和模型的.随着Android的发展,从原来的框架很少,全是自己动手撸.到现在框架越来越多,选型也越来越多,导致 ...