近期在研究持续集成,涉及到Jenkins,GitLab,Ant,Maven等主流工具与技术,会慢慢整理成博文,以作参考
首先是Ant
Ant安装:
官网主页:http://ant.apache.org/
下载地址:http://ant.apache.org/bindownload.cgi
Windows下载解压zip,环境变量添加ANT_HOME,值为解压路径,并在PATH中添加%ANT_HOME%/bin
Linux下载解压tar,环境变量在/etc/profile中添加ANT_HOME,值为解压路径,并添加一行export PATH=$ANT_HOME/bin:$PATH
一切皆在安装jdk并配置环境变量之后,如果没有,走开,我不想跟你说话
配置成功后,Windows CMD下、Linux直接输入ant -version,回车执行,显示Ant版本号即为配置成功
不截图了,so easy
Ant使用:
Ant核心的build.xml文件,提供了各种应用接口,满足现有主流开发环境、测试框架
啥也不说了,直接上Demo,包含了编译、打jar包、打war包等操作,看不懂的也走开吧
<?xml version="1.0" encoding="UTF-8" ?>
<project name="xxxx" default="build" basedir=".">
<!-- 定义属性 -->
<property name="srcDir" location="build/classes" />
<property name="testDir" location="build/test" />
<property name="packDir" location="build/packages" />
<property name="tarDir" location="build/xxxx" />
<property name="package" value="com.xxxx.xxxx.xxxx" />
<property name="mainClass" value="xxxx" />
<property name="jarFile" location="${packDir}/xxxx.jar" />
<property name="testFile" location="${packDir}/testxxxx.jar" />
<property name="tarFile" location="${packDir}/xxxx.tar.gz" />
<!-- 定义路径:编译java文件时使用到的jar包 -->
<path id="run.classpath">
<fileset dir="${basedir}">
<include name="lib/*.jar" />
</fileset>
</path>
<!-- 定义任务:清理独立于bin目录的ant编译目录 -->
<target name="clean">
<delete dir="build/" />
</target>
<!-- 定义任务:重新建立ant编译目录 -->
<target name="init" depends="clean">
<mkdir dir="${srcDir}" />
<mkdir dir="${testDir}" />
<mkdir dir="${packDir}" />
<mkdir dir="${tarDir}" />
</target>
<!-- 定义任务:编译src文件夹下的java文件,编译后的class文件放入ant编译目录 -->
<target name="compile" depends="init">
<!-- 编译src -->
<javac nowarn="true" srcdir="src/" destdir="${srcDir}" includeAntRuntime="false" debug="on" encoding="utf-8">
<classpath refid="run.classpath" />
</javac>
<!-- 编译test -->
<javac nowarn="true" srcdir="test/" destdir="${testDir}" includeAntRuntime="false" debug="on" encoding="utf-8">
<classpath refid="run.classpath" />
</javac>
</target>
<!-- 定义任务:将class集合文件打成jar包 -->
<target name="makejar" depends="compile">
<!-- 打包src -->
<jar destfile="${jarFile}" basedir="${srcDir}">
<!--
<manifest>
<attribute name="Main-Class" value="${package}.${mainClass}" />
</manifest>
-->
</jar>
<!-- 打包test -->
<jar destfile="${testFile}" basedir="${testDir}" />
</target>
<!-- 定义任务:将项目文件打成tar包 -->
<target name="maketar" depends="makejar">
<mkdir dir="${tarDir}/lib" />
<mkdir dir="${tarDir}/conf" />
<copydir dest="${tarDir}/lib" src="${basedir}/lib" />
<copydir dest="${tarDir}/conf" src="${basedir}/conf" />
<copy todir="${tarDir}/lib" file="${jarFile}" />
<copy todir="${tarDir}" file="${basedir}/script/run.sh" />
<copy todir="${tarDir}" file="${basedir}/script/run_as_xdja.sh" />
<tar compression="gzip" destfile="${tarFile}" basedir="${tarDir}" />
</target>
<!-- 只是输出个日志告知Ant正在工作 -->
<target name="build" depends="clean,init,compile,makejar,maketar">
<echo message="Ant is building project" />
</target>
</project>
值得注意的是第二行的default="build",对应脚本中的<target name="build">,如此,可执行包含此target和其之前的所有target任务,如果赋值为前一个target的名称,则此名称为build的target任务不会执行
下次会整理单元测试的ant脚本,包括junit、testNG,并提供报告