Ant 一个生成Zip完成的例子

 

    代码完成的功能列表:

E:\framespace\Diary>ant -p
Buildfile: E:\framespace\Diary\build.xml

Main targets:

 clean        清理编译目录
 cleanoutput  清理输出目录
 init         创建输出目录
 checkstyle   用Checkstyle校验源代码
 copysrc      复制源代码资源文件到编译目录
 compilesrc   编译源代码文件
 copytest     复制测试代码资源文件到编译目录
 compiletest  编译测试代码文件
 test         批量测试,并生成html
 createjar    生成Jar
 javadoc      生成JavaDoc
 zip          生成Zip
 total        构建完成
Default target: total

 

     build.xml内容

<?xml version="1.0" encoding="UTF-8"?>
<project name="diary" default="total">

	<tstamp>
		<format property="build.latest.dir" pattern="yyyyMMddHHmmss"/>
		<format property="build.latest.date" pattern="yyyy-MM-dd"/>
		<format property="build.latest.time" pattern="HH:mm:ss"/>
	</tstamp>

	<property name="src.dir" location="src"/>

	<property name="lib.dir" location="WebContent\WEB-INF\lib"/>
	
	<property name="build.dir" location="WebContent\WEB-INF\classes"/>

	<!-- Output -->
	<property name="build.output" location="output"/>

	<property name="build.output.dir" location="${build.output}/diary-${build.latest.dir}"/>

	<!-- JavaDoc -->
	<property name="build.output.doc.dir" location="${build.output.dir}/docs"/>

	<!-- Test -->
	<property name="test.dir" location="test"/>

	<property name="build.output.test.dir" location="${build.output.dir}/test"/>

	<property name="build.output.test.data.dir" location="${build.output.test.dir}/data"/>

	<!-- CheckStyle -->
	<property name="build.output.checkstyle.dir" location="${build.output.dir}/checkstyle"/>

    <property name="checkstyle.xml" location="${build.output.checkstyle.dir}/checkstyle_checks.xml"/> 
	
    <property name="checkstyle.xsl" location="${build.output.checkstyle.dir}/checkstyle-frames.xsl"/> 

	<!-- Log -->
	<property name="build.output.log" location="${build.output}/output.log"/>

	<property name="build.output.log.verbose" location="${build.output}/output_verbose.log"/>

	<property name="build.output.log.datetime" value="[${build.latest.date} ${build.latest.time}] "/>

	<!-- Jar -->
	<property file="${src.dir}/base.properties"/>

	<property name="build.output.requires.dir" location="${build.output.dir}/requires"/>

	<fileset id="compile.jar" dir="${lib.dir}">
		<include name="commons-lang-2.4.jar"/>
	</fileset>

	<!-- 类路径 -->
	<path id="compile.classpath">
		<fileset refid="compile.jar"/>
	</path>

	<path id="test.classpath">
		<path refid="compile.classpath"/>
		<pathelement location="${lib.dir}/junit-4.10.jar"/>
		<pathelement location="${build.dir}"/> 
	</path>

	<path id="checkstyle.classpath">
		<pathelement location="${lib.dir}/checkstyle-5.6-all.jar"/>
	</path>
	
	<!-- 记录日志,日志保存到文件中 -->
	<record name="${build.output.log}" append="no"/>

	<record name="${build.output.log.verbose}" append="no" loglevel="verbose"/>


	<target name="total" depends="zip" description="构建完成">
		<echo>${build.output.log.datetime}构建完成!</echo>
	</target>

	<target name="zip" depends="createjar,javadoc" description="生成Zip">
		<zip destfile="${build.output.dir}/${project.name}-core-${project.version}.zip" duplicate="preserve">
			 <zipfileset dir="${build.output.dir}/docs" prefix="docs"/>
			 <zipfileset dir="${build.output.dir}/requires" prefix="requires"/>
			 <zipfileset file="${build.output.dir}/*.jar"/>
		</zip>
		<echo>${build.output.log.datetime}生成Zip完成!</echo>
	</target>

	<target name="createjar" depends="test" description="生成Jar">
		<manifest file="${build.output.dir}/MANIFEST.MF" encoding="utf-8">
			<attribute name="Built-By" value="${user.name}"/>
			<section name="${project.name}">
				<attribute name="Implementation-Title" value="${project.name}"/>
				<attribute name="Implementation-Version" value="${project.version}"/>
			</section>
		</manifest>
		<jar destfile="${build.output.dir}/${project.name}-core-${project.version}.jar" duplicate="preserve" compress="false" manifestencoding="utf-8" manifest="${build.output.dir}/MANIFEST.MF">
			<fileset dir="${build.dir}">
				<exclude name="test/**/*"/>
				<exclude name="test"/>
				<exclude name="checkstyle_checks.xml"/>
				<exclude name="checkstyle-frames.xsl"/>
				<exclude name="checkstyletask.properties"/>
				<exclude name="sun_checks.xml"/>
				<exclude name="checkstyle_checks.xml"/>
				<exclude name="base.properties"/>
			</fileset>
		</jar>
		<copy todir="${build.output.requires.dir}">
			<fileset refid="compile.jar"/>
		</copy>
		<echo>${build.output.log.datetime}生成Jar完成!</echo>
	</target>

	<target name="javadoc" depends="test" description="生成JavaDoc">  
        <javadoc  
            sourcepath="${src.dir}"  
            destdir="${build.output.doc.dir}"  
            packagenames="diary.*"  
            use="true"  
            version="true"  
            windowtitle="${project.name}"  
            failonerror="true">  
            <classpath refid="compile.classpath"/>  
        </javadoc> 
		<echo>${build.output.log.datetime}生成JavaDoc完成,详情可查看${build.output.doc.dir}/index.html!</echo>
    </target>

	<target name="test" depends="compilesrc,compiletest" description="批量测试,并生成html">  
        <junit printsummary="false" haltonfailure="false" errorProperty="test.failed" failureProperty="test.failed">  
            <classpath refid="test.classpath"/>  
            <formatter type="brief" usefile="false"/>  
            <formatter type="xml"/>  
			<!-- 在testcase定义的情况下,单独测试testcase -->
            <test name="${testcase}" todir="${build.output.test.data.dir}" if="testcase"/>  
			<!-- 批量测试 -->
            <batchtest todir="${build.output.test.data.dir}" unless="testcase">  
                <fileset dir="${build.dir}">  
                    <include name="**/*Test.class"/>  
                </fileset>  
            </batchtest>  
        </junit>  
        <junitreport todir="${build.output.test.data.dir}">  
            <fileset dir="${build.output.test.data.dir}">  
                <include name="TEST-*.xml"/>  
            </fileset>  
            <report format="frames" todir="${build.output.test.dir}"/>  
        </junitreport>  
        <fail if="test.failed">  
            ${build.output.log.datetime}批量测试,并生成html失败,详细可查看${build.output.test.dir}/index.html  
        </fail>  
        <echo>${build.output.log.datetime}批量测试,并生成html完成,详细可查看${build.output.test.dir}/index.html!</echo>  
    </target> 

	<target name="compiletest" depends="copytest,compilesrc" description="编译测试代码文件">
		<javac srcdir="${test.dir}" destdir="${build.dir}" includeAntRuntime="false" encoding="UTF-8">
			<include name="**/*.java"/>
			<classpath refid="test.classpath"/>
		</javac>
		<echo>${build.output.log.datetime}编译测试代码文件完成!</echo>
	</target>

	<target name="copytest" depends="init" description="复制测试代码资源文件到编译目录">
		<fileset dir="${test.dir}">
			<exclude name="**/*.java"/>
		</fileset>
		<echo>${build.output.log.datetime}复制测试代码资源文件到编译目录完成!</echo>
	</target>

	<target name="compilesrc" depends="checkstyle,copysrc" description="编译源代码文件">
		<javac srcdir="${src.dir}" destdir="${build.dir}" includeAntRuntime="false" encoding="UTF-8">
			<include name="**/*.java"/>
			<classpath refid="compile.classpath"/>
		</javac>
		<echo>${build.output.log.datetime}编译源代码文件完成!</echo>
	</target>

	<target name="copysrc" depends="init" description="复制源代码资源文件到编译目录">
		<copy todir="${build.dir}" includeemptydirs="false">
			<fileset dir="${src.dir}">
				<exclude name="**/*.java"/>
			</fileset>
		</copy>
		<echo>${build.output.log.datetime}复制源代码资源文件到编译目录完成!</echo>
	</target>

	<target name="checkstyle" depends="init" description="用Checkstyle校验源代码">
		<taskdef name="checkstyle"  classname="com.puppycrawl.tools.checkstyle.CheckStyleTask" classpathref="checkstyle.classpath"/> 
        <checkstyle    
            failOnViolation="false"      
            failureProperty="checkstyle.failed"     
            config="${src.dir}/sun_checks.xml">     
            <fileset dir="${src.dir}" includes="**/*.java"/>      
            <formatter type="plain"/>      
            <formatter type="xml" toFile="${build.output.checkstyle.dir}/checkstyle_report.xml"/>      
        </checkstyle>
		<xslt style="${checkstyle.xsl}"      
            in="${build.output.checkstyle.dir}/checkstyle_report.xml"      
            out="${build.output.checkstyle.dir}/checkstyle_report.html">    
        </xslt>
		<echo>${build.output.log.datetime}用Checkstyle校验源代码完成,详细信息查看${build.output.checkstyle.dir}/checkstyle_report.html!</echo>
    </target>

	<target name="init" depends="clean,cleanoutput" description="创建输出目录">
		<mkdir dir="${build.output.dir}"/>
		<mkdir dir="${build.output.doc.dir}"/>
		<mkdir dir="${build.output.test.dir}"/>
		<mkdir dir="${build.output.test.data.dir}"/>
		<mkdir dir="${build.output.checkstyle.dir}"/>
		<copy todir="${build.output.checkstyle.dir}" overwrite="true">
			<fileset dir="${src.dir}">
				<include name="checkstyle-frames.xsl"/>
				<include name="checkstyle_checks.xml"/>
			</fileset>
			<filterset>
				<filter token="output.dir" value="${build.output.checkstyle.dir}"/>
			</filterset>
		</copy>
		<echo>${build.output.log.datetime}输出目录创建完成!</echo>
	</target>

	<target name="clean" description="清理编译目录">
		<delete includeemptydirs="true">
			<fileset dir="${build.dir}">
				<include name="**/*"/>
			</fileset>
		</delete>
		<echo>${build.output.log.datetime}编译目录清理完成!</echo>
	</target>

	<target name="cleanoutput" description="清理输出目录">		
		<delete includeemptydirs="true">
			<fileset dir="${build.output}">
				<exclude name="output*.log"/>
			</fileset>
		</delete>
		<echo>${build.output.log.datetime}输出目录清理完成!</echo>
	</target>
	
</project>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值