java web项目使用ant编译将不同的功能代码打包成jar,进而分局点将项目打包成不同的tar.gz包进而部署
使用ant可以轻松的将一个项目分离代码,直接打包成不同需求的tar.gz包使用
1.build.properties (属性)
version.num=1.0 #版本信息
2.build.xml (ant打包文件)
<?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="deploytargz" name="pomc"> <!-- 引入配置文件 --> <property file="build.properties" /> <!-- 配置引用属性 --> <property name="src.dir" value="src" /> <property name="build.dir" value="build" /> <property name="web.dir" value="WebRoot" /> <property name="name" value="pomc" /> <property name="target" value="1.8" /> <property name="source" value="1.8" /> <!-- 引用jar包的路径 --> <path id="pomc.classpath"> <pathelement location="WebRoot/WEB-INF/classes" /> <path refid="master-classpath" /> </path> <path id="master-classpath"> <fileset dir="${web.dir}/WEB-INF/lib"> <include name="*.jar" /> <include name="**/*.jar" /> </fileset> </path> <!-- 初始化 --> <target name="init"> <delete dir="${build.dir}/jar" /> <mkdir dir="${build.dir}/jar" /> <delete dir="${build.dir}/classes" /> <mkdir dir="${build.dir}/classes" /> <delete dir="${web.dir}/WEB-INF/classes" /> <mkdir dir="${web.dir}/WEB-INF/classes" /> <copy todir="${web.dir}/WEB-INF/classes" includeEmptyDirs="false"> <!-- 将项目中除会编译生成class文件的java文件之外其他类型的文件拷贝到对应的目录下,排除指定文件名后缀 --> <fileset dir="${src.dir}"> <exclude name="**/*.launch" /> <exclude name="**/*.java" /> </fileset> </copy> </target> <!-- 编译生成class文件 --> <target name="build" depends="init"> <!-- 新建编译存放的classes文件 --> <mkdir dir="${build.dir}/classes" /> <!-- java编译 --> <javac destdir="${build.dir}/classes" source="${source}" target="${target}" debug="true" deprecation="false" optimize="false" failonerror="true" encoding="utf-8"> <src path="${src.dir}" /> <!-- 编译所需要的jar包路径 --> <classpath refid="master-classpath" /> </javac> </target> <!-- 将classes打包成jar包 --> <target name="jar" depends="build" description="Compress the java class files to jar"> <mkdir dir="${build.dir}/jar" /> <delete file="${build.dir}/jar/${name}.jar" /> <buildnumber file="./buildnum.txt" /> <!-- 指定时间戳 可以调用TODAY --> <tstamp> <format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss" /> </tstamp> <!-- 生成清单文件 --> <manifest file="${web.dir}/META-INF/MANIFEST.MF"> <attribute name="Built-By" value="${user.name}" /> <attribute name="Implementation-Version" value="${version.num}.${build.number}" /> <attribute name="Built-Date" value="${TODAY}" /> </manifest> <!-- 打包jar --> <!-- includes 包含哪些后缀文件 空格分隔 --> <jar destfile="${build.dir}/jar/${name}.jar" basedir="${build.dir}/classes" includes="**/*.class" manifest="${web.dir}/META-INF/MANIFEST.MF" /> </target> <!-- depends指的是执行该任务,会先执行那个任务 --> <target name="deploytargz" depends="jar" description="Deploy application as a tar.gz file"> <!-- 指定时间戳 可以调用VERSIONDAY --> <tstamp> <format property="VERSIONDAY" pattern="yyyyMMdd" /> </tstamp> <!-- 将之前编译生成的classes路径下的编译结果拷贝到WEB路径下 --> <copy todir="${web.dir}/WEB-INF/lib" overwrite="true"> <fileset dir="${build.dir}/jar"> </fileset> </copy> <!-- 打包tar.gz --> <tar destfile="${name}${VERSIONDAY}.tar.gz" basedir="${web.dir}" compression="gzip" /> <!-- 将tar.gz包拷贝到build的war目录下 --> <copy todir="${build.dir}" preservelastmodified="true"> <fileset dir="."> <include name="*.tar.gz" /> </fileset> </copy> </target> <target name="cleanup"> <!-- 删除编译文件夹 --> <delete dir="${build.dir}/classes" /> <delete> <fileset dir="." includes="*.tar.gz"/> </delete> </target> </project>
为梦想不止不休!