`

Ant 一个生成Zip完成的例子

    博客分类:
  • Ant
 
阅读更多

 

    代码完成的功能列表:

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>

 

分享到:
评论

相关推荐

    8_ant_通过ant生成doc和zip(基于实战的)

    接着,我们来看如何使用Ant生成ZIP压缩包。Ant的`zip`任务可以将一组文件或目录打包成ZIP格式。你需要定义一个`zip`任务,指定输出的ZIP文件名以及包含的文件或目录。例如: ```xml &lt;target name="create-zip"&gt; ...

    ant打zip包简单demo

    在这个例子中,`create-zip`目标创建了一个ZIP包,名为`ZipTest.zip`,并将`build.dir/classes`(编译后的Java类文件)和`resources`目录下的所有文件包含进去。`fileset`元素用来指定要添加到ZIP包的文件或目录。 ...

    apache-ant-1.9.16-bin.zip

    标题"apache-ant-1.9.16-bin.zip"表明这是Apache Ant的一个特定版本,即1.9.16,且文件以“bin”命名,意味着它包含的是可执行文件和运行时所需的库,而非源代码。这个版本可能包含了用于Windows、Linux和Mac OS等...

    [原]使用Ant实现zip压缩解压功能

    在这个例子中,`&lt;zip&gt;`任务创建了一个名为“output.zip”的ZIP文件,`&lt;fileset&gt;`定义了要被压缩的文件或目录,`dir`属性指定了源文件所在的目录,而`&lt;include&gt;`标签则指定了需要包含的文件模式。 解压ZIP文件同样...

    antlr3-ant.jar.zip

    在这个例子中,`taskdef`元素定义了一个名为`antlr`的Ant任务,指向ANTLR的类。然后在`generate-parser`目标中,Ant会调用这个任务来处理`MyGrammar.g`这个ANTLR语法文件,生成相应的解析器和词法分析器Java源代码。...

    ant操作7zip压缩、解压 tar.gz

    这将生成一个名为"example.tar"的tar文件。接着,我们可以使用7-Zip进一步解压tar文件: ```shell 7z x example.tar ``` 这样,所有包含在tar中的文件都会被提取到当前目录下。 在描述中提到的"build.xml",这是...

    ant-1.7.1.jar.zip

    Ant是Apache软件基金会的一个开放源代码项目,它是一款强大的构建工具,主要被Java开发者用于自动化构建、测试和部署Java项目。这个"ant-1.7.1.jar.zip"压缩包包含的是Ant 1.7.1版本的jar文件,它是Ant运行时的核心...

    apache-ant-1.9.15-bin.zip

    Apache Ant 是一个强大的构建工具,尤其在Java开发领域中被广泛应用。它的主要功能是通过XML配置文件(通常命名为build.xml)来定义项目构建的各种任务,包括编译源代码、运行测试、打包应用、生成文档以及部署等...

    ant-apache-bsf-1.7.1.jar.zip

    在上述例子中,我们创建了一个Ant任务`run-script`,并在其中使用BSF执行了一段JavaScript代码,生成了一个包含“Hello, World!”的文本文件。这种方式使得Ant不仅限于执行预定义的任务,还可以灵活地根据项目需求...

    ant-contrib-1.0b3.jar.zip

    在这个特定的案例中,我们关注的是"ant-contrib-1.0b3.jar.zip"这个压缩包,其中包含了"ant-contrib-1.0b3.jar"文件,这是使用Ant进行循环打包时所必需的一个第三方库。 Apache Ant是一个由Java编写的开源构建工具...

    ant-vaj-1.6.jar.zip

    在Ant-Vaj-1.6.jar.zip中,"ant-vaj-1.6.jar"是Ant的一个扩展,专门用于支持IBM Visual Age for Java(Vaj)的构建过程。 Vaj,全称IBM Visual Age for Java,是一款早期的Java集成开发环境(IDE),它提供了强大的...

    ant-xslp-1.6.4.jar.zip

    本文将深入探讨这两个组件以及它们在开发过程中的作用,特别是关注"ant-xslp-1.6.4.jar.zip"这个压缩包,它包含了Ant的一个扩展和相关的依赖。 首先,让我们来理解Ant。Apache Ant是一个开源的Java项目构建系统,它...

    ant-xslp-1.6.5.jar.zip

    总的来说,"ant-xslp-1.6.5.jar.zip"是一个关键的组件,它提供了Ant对XSLT的支持,使得Java开发者能够在构建过程中更加灵活地处理XML数据。了解和掌握这个工具的使用方法,对于提升Java项目构建的效率和质量至关重要...

    ant-1.6.5.jar

    Apache Ant 是一个Java库和命令行工具,其任务是驱动构建过程。它的设计目标是推动软件项目的构建工作,类似于Make工具在Unix环境中的作用。Ant使用XML来描述构建过程和依赖关系,使得构建过程可跨平台执行。"ant-...

    ant-apt.jar.zip

    总的来说,Ant-APT为Java开发者提供了一个强大且灵活的工具,使得构建过程中可以充分利用APT的能力,提高代码生成的自动化程度。理解并熟练掌握Ant-APT的使用,对于提升开发效率、维护项目结构清晰具有重要意义。...

    Ant批量打包Android应用

    Ant是一个基于Java的构建工具,它使用XML来描述项目构建过程,能够自动化执行编译、测试、打包等任务。下面将详细介绍如何使用Ant来批量打包Android应用。 首先,确保你已经安装了以下基本环境: 1. Java ...

    Ant安装配置笔记.doc

    ANT,全称Apache Ant,是一个基于Java的构建工具,它以XML格式定义构建脚本,使得项目构建过程具有良好的可读性和可维护性。ANT在Java世界中扮演的角色类似于C语言中的make工具,用于自动化执行诸如编译、打包、测试...

    Ant构建工具学习笔记

    以下是一个使用XDoclet插件生成Hibernate配置文件的例子: ```xml ${xdoclet.home}/lib"&gt; **/*.jar"/&gt; ${xdoclet.home}/plugins"&gt; **/*.jar"/&gt; &lt;taskdef name="xdoclet" classname="org.xdoclet.ant....

Global site tag (gtag.js) - Google Analytics