文档章节

build.xml详解(ant打包)

今日竹石
 今日竹石
发布于 2014/04/18 13:40
字数 1399
阅读 57
收藏 0

1.安装ant

2.配置环境变量:

    ANT_HOME=ant安装目录   

    PATH=%PATH%;%ANT_HOME%\bin                                                                                              

3.build.xml 

<!--Ant(another neat tool---另一个整洁的工具)-->

<?xml version="1.0"?>
<project default="dist" name="Project A">
    <description>
        一段描述信息,没有实际作用。
    </description>
    <!--property 元素相当于变量,存放一定的值,一旦给定以后不能改变,只能通过控制台命令行给初始值。
                一般用 value 给其赋值,这里用 location 代替 value 是因为 location 属性专门设
                计用于以平台无关的方式包含文件系统路径,也就是当前路径。-->
    <property name="srcDir" location="."/>
    <property name="buildDir" location="classes"/>
    <property name="distDir" location="dist"/>
    
    <!--一个target 元素就是一个任务,一个步骤,如果命令行没有指定开始任务,则由 project 元素的 default 属性决定要执行的任务-->
    <target name="init" description="在元素中指定描述信息!">
        <echo message="这里的信息将被输出到控制台!">
        <!--tstamp 元素一般不定义属性和内容,不产生任何输出;相反,它根据当前系统时间和日期设置 Ant 以下属性:
        属性                说明                                    例子
        DSTAMP            设置为当前日期,默认格式为yyyymmdd        20031217
        TSTAMP            设置为当前时间,默认格式为hhmm            1603
        TODAY            设置为当前日期,带完整的月份            2003 年12 月17 日-->
        <tstamp/>
        <!--mkdir 元素用来创建目录 dir 属性用来指定目录路径-->
        <!--delete 元素用来删除目录 ${buildDir} 引用 property 元素指定的 name 为 buildDir 的属性变量-->
        <mkdir dir="${buildDir}"/>
        <mkdir dir="${distDir}"/>
        <!--文件操作:
            <copy file="src/Test.java" tofile="src/TestCopy.java"/> 把文件 Test.java 拷贝一份 TestCopy.java 
            <move file="src/Test.java" tofile="src/TestCopy.java"/> 把文件 Test.java 重新命名为 TestCopy.java
            <copy file="src/Test.java" todir="archive"/> 把文件 Test.java 从 src 目录复制一份到 archive 目录下
            <move file="src/Test.java" todir="archive"/> 把文件 Test.java 从 src 目录下移动到 archive 目录下
            <replace file="input.txt" token="old" value="new"/>replace 任务,它执行文件中的查找和替换操作。
            token 属性指定要查找的字符串,
            value 属性指定一个新的字符串,
            查找到的标记字符串的所有实例都被替换为这个新的字符串.
            替换操作将在文件本身之内的适当位置进行。为了提供更详细的输出,可把 summary 属性设置为
            true。这将导致该任务输出找到和替换的标记字符串实例的数目。
            <copy todir="archive">---使用模式匹配复制多个文件
                <fileset dir="src">--fileset 代替 file 属性
                    <include name="*.java"/>--包含 src 目录下所有的 *.java 文件
                    <exclude name="*.class"/>--不包含 src 目录下所有的 *.class 文件
                </fileset>
            </copy>-->
    </target>

    <!--target 元素的 depends 属性用来设置多个 target 元素之间的依赖关系,如果要执行某个任务,必须先执行 depends 属性指定的所有
        它所依赖的 target 元素,只有它所依赖的所有 target 元素都执行完了才能执行它自己-->
    <target name="com" depends="init">
        <!--javac 元素把 srcdir 指定目录下所有 *.java 文件编译成 *.class 文件到 destdir 指定的目录下!
            如果不指定 destdir 属性,那么默认编译到同一目录下。其他属性:
             classpath:等价于javac 的-classpath 选项。
             debug="true":指示编译器应该带调试信息编译源文件。
             fork="true":当你希望指定编译器的某些内存选项,或者需要使用一种不同级别的编译器的时候。该属性设置为“true”
             executable="d:sdk141injavac":指定一个不同的 javac 可执行文件。
             memoryMaximumSize="128m":向上边指定的 javac 传递一个最大内存设置-->
        <javac srcdir="${srcDir}" destdir="${buildDir}"/>
    </target>

    <target name="dist" depends="com">
        <!--jar 元素:在编译 Java 源文件之后,结果类文件通常被打包到一个 JAR 文件中,这个文件类似 zip 归档文
            件。每个 JAR 文件都包含一个清单文件,它可以指定该 JAR 文件的属性。
            还可以把目录下的所有内容打包为 WAR 文件
            destfile:打包后的文件全名
            basedir:要打包的文件路径-->
        <jar destfile="${distDir}/package-${DSTAMP}.jar" basedir="${buildDir}">
            <!--manifest 属性允许指定一个用作该 JAR 文件的清单的文件。清单文件的内容还可以使用 manifest
                任务在生成文件中指定。这个任务能够像文件系统写入一个清单文件,或者能够实际嵌套在 jar 之
                内,以便一次性地创建清单文件和 JAR 文件。-->
            <manifest>
                <attribute name="Built-By" value="${user.name}"/>
                <attribute name="Main-Class" value="package.Main"/>
            </manifest>
        </jar>
        <jar destfile="${distDir}/package-src-${DSTAMP}.jar" basedir="${srcDir}"/>
    </target>

    <target name="zip" depends="dist">
        <!--zip 元素用来创建 zip 包,和 jar 元素相似-->
        <zip destfile="output.zip" basedir="output"/>
        <!--相同的语法也可用于创建 tar 文件。 还可以使用 GZip 和 BZip 任务来压缩文件。-->
        <tar destfile="output.tar" basedir="output"/>
        <gzip src="output.tar" zipfile="output.tar.gz"/>
        <!--解压缩和提取文件同样也很简单.-->
        <unzip src="output.tar.gz" dest="extractDir"/>
        <!--还可以包括 overwrite 属性来控制覆盖行为。默认设置是覆盖与正在被提取的归档文件中的条目相
            匹配的所有现有文件。相关的任务名称是 untar、unjar、gunzip 和 bunzip2。-->
    </target>

    <!--编写一个 clean目标来从目标目录移除生成的任何类文件是个很好的习惯。如果想要确
        保所有源文件都已编译,就可以使用这个任务。这种行为刻画了 Ant 的许多任务的特点:
        如果某个任务能够确定所请求的操作不需要执行,那么该操作就会被跳过。-->
    <target name="clean">
        <delete dir="${buildDir}"/>
        <delete dir="${distDir}"/>
    </target>
</project>



© 著作权归作者所有

共有 人打赏支持
今日竹石
粉丝 41
博文 227
码字总数 181312
作品 0
朝阳
程序员
Android ANT多渠道打包

在没用AndroidStudio的Gradle构建项目之前,多渠道打包一般都是基于ANT构建,所以在此记录一下,以供查阅! 一、文件准备 1、首先要去官网下载ANT代码。 ANT官网下载地址 2、下载ANT循环打包...

军歌
2014/11/20
0
3
XMPP学习笔记-LESSON-004:openfire之编译简介

of的使用非常简单,便捷,由于开源,下载源码后也可以随意修改,于是编译也就有了了解的必要。 of的构建工具是ant,所以前提你需要下载apache ant,并配置好环境。在此之前,建议了解一下ant...

今幕明
2014/02/10
0
0
一个基于Maven项目Ant的构建模板

一般的我创建的项目都是基于Maven的,但是很多人也喜欢用Ant打包jar,或者war.我一般都会在项目中既包含Maven的pom.xml,也会有ant的build.xml 只要在控制台执行: mvn dependency:copy-depende...

震秦
2012/10/19
0
3
Android Ant 批量多渠道打包实例

Android Ant 批量多渠道打包实例 关于批量打包,无需多言,这是每个国内Android开发者必须面对的一个问题。 下面,我就以开源项目「知乎小报」为例,详细说明如何使用ANT实现批量打渠道包。 ...

Cundong
2014/10/17
0
7
Ant编译android,并Proguard代码混淆,v4混淆配置

忙了三四周,总算把购开心的ios版(appStore搜“购开心”)成功翻译成了android版,UI效果基本保持一致,上一张UI效果图吧,很养眼的: 还不错吧,进入正题吧。 以前一直是让我徒弟混淆和打包的...

辉兔狼
2013/09/03
0
1

没有更多内容

加载失败,请刷新页面

加载更多

一切都靠大数据:滴滴已封禁4.3万人员、车辆

这段时间以来,滴滴出行相继出炉了各种整改措施,包括自身安全建设和外部社会共建,昨日就刚刚宣布正在筹备建立安全监督顾问委员会。 据媒体最新报道,9月30日,上海市交通委员会执法总队、上...

linuxCool
42分钟前
4
0
awk命令用法介绍

10月18日任务 9.6/9.7 awk 1.awk(上)(下) 1.awk 分段操作功能 指定分隔符,并把第一段打印出来,不会改动文件内容 将所有内容打印出来 awk 没有指定分隔符号,则会默认用空格或者空白字符...

hhpuppy
今天
4
0
Spring Cloud Eureka Server高可用之:在线扩容

本文共 1591字,阅读大约需要 6分钟 ! 概述 业务微服务化以后,我们要求服务高可用,于是我们可以部署多个相同的服务实例,并引入负载均衡机制。而微服务注册中心作为微服务化系统的重要单元...

CodeSheep
今天
2
0
内网esxi主机上安装CoreOS虚拟机

CoreOS是一个为专门运行容器而设计的轻量级linux发行版,旨在通过轻量的系统架构和灵活的应用程序部署能力简化数据中心的维护成本和复杂度。它没有包管理工具,运行容器化应用以提供服务;默...

hiwill
今天
2
0
20181018 上课截图

![](https://oscimg.oschina.net/oscnet/49f66c08ab8c59a21a3b98889d961672f30.jpg) ![](https://oscimg.oschina.net/oscnet/a61bc2d618b403650dbd4bf68a671fabecb.jpg)......

小丑鱼00
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部