ant使用总结(二):相关命令说明

article/2025/11/10 19:07:36

在ant安装目录的manual目录是ant的说明文档,打开index.xml,点击Using Apache ant有使用说明。


相关命令说明


指定配置文件


执行ant命令,默认使用当前目录下的build.xml,可以通过-f指定配置文件。
示例:ant -f 配置文件路径

project


属性:
name:工程名称
default:默认执行的target

target


<target>是一个容器,指令集合,一个事务。
属性:
depends:依赖项,执行该target之前需要先执行的target。
name:名称

例子:
<target name="A" > 
<target name="B" depends="A"> 
<target name="C" depends="A,B">

在命令行中执行指定target:ant targetName

property


ant中的属性,相当于定义一个变量,通过${属性名}引用。
属性:
name:变量名
value:值
file:属性配置文件路径,配置文件中要以key=value的格式配置属性。例子: <property file="local.properties" />
environment:给环境变量起一个别名​

例子:
<property name="a" value="aaa" />
<target name="print">
<echo>${a}</echo>
</target>

import


包含一个文件,project的name属性值不能冲突。optional表示该文件是否可选。
<import file="test2.xml" optional="true" />

condition


condition标签可以通过条件判断去定义变量的值。
	<property name="a" value="aaa" /><!--<property name="b" value="bbb" />--><!-- 如果设置了属性b则值为${b},否则值为${a}--><condition property="val" value="${b}" else="${a}"><!-- 判断是否设置了指定属性 --><isset property="b" />        </condition>

propertyfile


把属性保存到一个文件里
属性:
file:文件路径
    <propertyfile file="auto.prop"><!-- 保存auto.umeng.channel=${a}到文件 --><entry key="auto.umeng.channel" value="${a}" /></propertyfile>

copy


1.拷贝单个文件到指定路径
<copy file="a.txt" tofile="b.txt" />

2.拷贝单个文件到指定目录
<copy file="a.txt  " todir="../tmpdir  " /  >

3.拷贝一个目录到另外一个目录下
<copy todir="../destDir">
<fileset dir="srcDir" />
</copy>

4.拷贝一批文件到指定目录下
<copy todir="../destDir">
<fileset dir="srcDir">
<include name="**/*.java">
<exclude name="**/Test.java"> 
</fileset>
</copy>

<copy todir="../destDir">
<fileset dir="srcDir" excludes="**/*.java"/>
</copy>


delete


1.删除一个文件
<delete file="a.txt" />

2.删除指定目录及其子目录
<delete dir="dir" />

3.删除指定的一组文件
<delete>
<fileset dir="." includes="**/*.bak" />
</delete>


move


1.移动或重命名一个文件
<move file="a.txt" tofile="b.txt" />

2.移动一个文件到指定目录下
<move file="a.txt" todir="destDir" />

3.移动一个目录到另一个目录下
<move todir="destDir">
<fileset dir="srcDir" />
<move/>

4.将一组文件移动到另一个目录下
<move todir="destDir">
<fileset dir"srcDir">
<include name="**/*.jar" />
<exclude name="**/ant.jar" /> 
</fileset>
</move>

javac


<javac srcdir="源文件目录" destdir="编译输出目录" classpath="依赖的jar文件或类目录" debug="on表示输入日志信息,off表示不输出" includes="包含文件" excludes="忽略文件" />

java


<java classname="执行的类的全路径名">
<classpath>
<pathelement location="xxx.jar" />
<pathelement path="classpath" />
</classpath>
</java>

pathelement可以通过location属性包含一个jar或者通过path属性包含一个类路径。classpath用于设定要使用的环境变量。

jar


<jar destfile="xxx.jar" basedir="./classes" includes="./lib/**(包含lib目录下所有文件)" excludes="**/Test.class(忽略所有Test.class)" manifest="自定义mf文件命名"/>

if


if通过条件判断决定是否进行一些操作。
	<!-- 如果条件成立,则调用print -->		<if><!-- 判断指定属性值是否为true --><!--<istrue value="${a}" />--><!-- 判断是否设置了指定属性 --><!--<isset property="prop"/>--><!-- 判断两个值是否相等 --><equals arg1="${channel}" arg2="2" /><then><antcall target="print" /></then></if>
antcall标签用于调用一个target。

script


script标签用于插入脚本代码。
示例:获取当前时间并设置为属性time的值。
<script language="javascript"><![CDATA[project.setProperty("time",Math.floor((new Date()).getTime()/1000));]]></script>

时间戳


格式化当前时间并设置属性time。
    <tstamp><format property="time"pattern="yy.M.d.HHmm" /></tstamp>

添加自定义jar到ant的classpath


	<!-- 添加ant-contrib-1.0b3.jar到classpath --><taskdef resource="net/sf/antcontrib/antcontrib.properties"><classpath><pathelement location="${env.ANT_ROOT}\lib\ant-contrib-1.0b3.jar" /></classpath></taskdef>

ant中实现迭代


由于ant本身不支持迭代,因此我们需要用到一个第三方的库 ant-contrib来实现迭代功能。
下载ant-contrib,并将ant-contrib-1.0b3.jar文件拷贝至ANT安装目录。
下载地址:
http://sourceforge.net/projects/ant-contrib/files/
http://pan.baidu.com/s/1pJKDeyR

我这里是把ant-contrib-1.0b3.jar放到了ant安装目录的lib目录下。
示例代码:
channel = ${channel}
运行效果:


替换指定字符串


转义符列表:
&lt;<小于号
&gt;>大于号
&amp;&
&apos;'单引号
&quot;"双引号

    
replaceregexp标签的是支持正则表达式的。

相关文章:
Android Ant 批量多渠道打包实例

ant使用总结(一):使用ant自动打包apk

ant使用总结(三):批量打包apk


http://chatgpt.dhexx.cn/article/EJOMH49K.shtml

相关文章

DatabaseMetaData 获取数据表字段注释内容

使用DataBaseMetaData获取mysql表字段注释 DatabaseMetaData metaData connection.getMetaData(); ResultSet rs null; rs metaData.getColumns(dbName, null, tableName, "%");while (rs.next()) { QueryColumn columnnew QueryColumn(rs.getString…

Spring boot项目中DatabaseMetaData方式获取表字段信息

日常工作中我们可能会遇到一些配置化的功能&#xff0c;比如我们需要根据元数据项动态生成一些模板&#xff0c;比如表格&#xff0c;excel等&#xff0c;这些都需要我获取到数据库表中字段长度、类型、格式等信息。下面就以一个小白的身份和大家分享下自己的实现过程。 背景 …

Java中DataBaseMetaData与ResultMetaData基本使用

java中的DataBaseMetaData与ResultMetaData使用&#xff1a; DataBaseMetaData 类对象通过Connection类对象获取 1&#xff0c; 获取数据库的url 2&#xff0c; 获取用户名 3&#xff0c; 获取有哪些数据库 package com.xzq.jdbc;import com.xzq.dbutils.DbUitl;import java.s…

DatabaseMetaData.getIndexInfo

示例 通过 DatabaseMetaData.getIndexInfo&#xff08;&#xff09; 获取索引信息。 public static void getIndexInfo() throws Exception {Connection conn getConnection();ResultSet rs null;try {DatabaseMetaData dbmd conn.getMetaData();rs dbmd.getIndexInfo(&q…

数据库元数据 DatabaseMetaData

一、元数据介绍 &#xff08;数据库元数据 DatabaseMetaData&#xff09; 数据库元数据指的是"数据库的定义信息。 DataBaseMetaData元数据获取方式 通过Connection.getDatabaseMetaData()方法获得代表DatabaseMetaData元数据的DatabaseMetaData对象。DataBaseMetaData…

DatabaseMetaData类的getTable()、getColumns()方法使用,以及参数的传递问题,针对oracle、mysql、postgres三种数据库进行举例

DatabaseMetaData类 DatabaseMetaData实例的获取获取数据库属性的方法getTable()方法getColumns()方法关于参数一参数二传参问题 DatabaseMetaData类是java.sql包中的类&#xff0c;利用它可以获取我们连接到的数据库的结构、存储等很多信息。如&#xff1a; 1、数据库与用户&a…

数据库之元数据——DatabaseMetaData的getMetaData()方法的简单使用

DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口&#xff0c;本文讲解DatabaseMetaData和ResultSetMetaData接口获取元数据的方法。 package com;import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverMa…

DatabaseMetaData的简单使用

在看大佬写的一个导出数据库建标脚本的接口的时候&#xff0c;发现频频用到DataBaseMetaData这个类&#xff0c;之前也没有 用过这个类下的API&#xff0c;记录一下心得用法。 DatabaseMetaData是java.sql包中的接口&#xff0c;利用它可以获取我们连接到的数据库的结构、存储等…

DatabaseMetaData类

DatabaseMetaData类是java.sql包中的类&#xff0c;利用它可以获取我们连接到的数据库的结构、存储等很多信息。如&#xff1a; 1、数据库与用户&#xff0c;数据库标识符以及函数与存储过程。 2、数据库限制。 3、数据库支持不支持的功能。 4、架构、…

数据库之-元数据 DatabaseMetaData 初学

DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口&#xff0c;本文讲解DatabaseMetaData和ResultSetMetaData接口获取元数据的方法。 获取数据库的所有表&#xff1a;(以MySQL和Oracle为例&#xff0c;其他类型的数据库接触不过&#xff0c;…

php备忘录模式

CleverCode最近在看备忘录模式。 1 模式介绍 在不破坏封闭的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 2 模式中的角色 1.Originator(发起人)&#xff1a;负责创建一个备忘录Memento&…

设计模式 — 行为型模式 — 备忘录模式

目录 文章目录 目录备忘录模式应用场景代码示例 备忘录模式 备忘录模式&#xff0c;在不破坏封闭的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 简单来说&#xff0c;就是在运行过程中我们…

“备忘录模式”就这么简单

备忘录模式的官方定义&#xff1a; 在不破坏封装性的前提下&#xff0c;获取一个对象的内部状态&#xff0c;并在该对象之外保存这些状态。这样以后就可以通过该对象恢复到原先保存的状态。 大白话说&#xff1a; 一个对象中一般都封装了很多属性&#xff0c;这些属性的值会随…

(18)备忘录模式

&#xfeff;&#xfeff; &#xff08;18&#xff09;备忘录模式 定义&#xff1a;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态 类型&#xff1a;行为类 类图&#xff1a; 我们…

Java设计模式-备忘录模式、备忘录模式应用场景是什么、又怎么使用

继续整理记录这段时间来的收获&#xff0c;详细代码可在我的Gitee仓库Java设计模式克隆下载学习使用&#xff01; 6.11 备忘录模式 6.11.1 定义 又称快照模式&#xff0c;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存此状态&am…

C++设计模式(17)——备忘录模式

亦称&#xff1a; 快照、Snapshot、Memento 意图 备忘录模式是一种行为设计模式&#xff0c; 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 问题 假如你正在开发一款文字编辑器应用程序。 除了简单的文字编辑功能外&#xff0c; 编辑器中还要有设置文本格…

Java备忘录模式(Memento)

本文我们来介绍下java23种设计模式中的备忘录模式。 备忘录模式Memento 使用场景 录入大批人员资料。正在录入当前人资料时&#xff0c;发现上一个人录错了&#xff0c; 此时需要恢复上一个人的资料&#xff0c;再进行修改。Word文档编辑时&#xff0c;忽然电脑死机或断电&a…

Java设计模式之备忘录模式

Java设计模式之备忘录模式 1. 备忘录模式概述1.1 备忘录模式简介1.2 备忘录模式类图1.3 备忘录模式的注意事项和细节 2. 备忘录模式实现2.1 项目说明2.2 项目实现 1. 备忘录模式概述 1.1 备忘录模式简介 1.备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的…

【设计模式】备忘录模式

设计模式总结链接 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式&#xff0c;是对象的行为模式。   备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下&#xff0c;将一个对象的状态捕捉(Capture)住&#xff…

23种设计模式——备忘录模式

目录 备忘录模式&#xff08;Memento&#xff09; UML图 示例代码 适用场景 优缺点 备忘录模式和原型模式 例子——游戏进度存档 例子——象棋中的悔棋 备忘录模式&#xff08;Memento&#xff09; 本质&#xff1a;保存和恢复内部状态 备忘录模式&#xff1a;在不破坏…