在Eclipse中使用Ant Ant是Java平台下非常棒的批处理命令执行程序,能非常方便地自动完成编译,测试,打包,部署等等一系列任务,大大提高开发效率。
它可以实现项目的自动构建和部署等功能、批量处理。Ant使用属性property元素来让你能够具体说明属性。这就允许这些属性能够在不同的构建和不同的环境下发生改变。
构建文件:如何利用 Apache Ant 来自动地构建和部署项目的过程
Ant属性 默认的情况下,Ant提供以下预定义的属性,这些属性都是可以在构建文件中使用的。当你只需要对小部分属性进行设置时,可以选择直接在构建文件中设置。
<property name="" value="">
![](https://i-blog.csdnimg.cn/blog_migrate/af3c2a57c3d5479aba3c3c2b884b727c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/348a7bc66e8355d3ba75e2ee9bd578e0.png)
然而,对于大项目,最好将设置属性的信息存储在一个独立的文件中。
存储属性信息在一个独立的文件中将会提供以下好处:
1.好处:重复使用相同的构建文件,该文件在不同的执行环境中使用不同的属性设置。例如,构建属性在不同的环境中可以独立地被维护。
2.当你事先不知道属性的值时(例如,在一个实际的环境中),这样的处理是有益的。这样允许你在知道属性值后,在其他环境中执行生成(build)操作。
这里没有硬性规定,但是一般情况下,属性文件都被命名为
build.properties
, 并且与
build.xml
存放在同一目录层。 你可以基于部署环境 ——比如:
build.properties.dev
和
build.properties.test
创建多个
build.properties
文件。
在下面的例子中展示了
build.xml
文件和与之相联系的
build.properties
文件:
build.xml
<?xml version="1.0"?><project name="Hello World Project" default="info"> <property file="build.properties"/> <target name="info"> <echo>Apache Ant version is ${ant.version} - You are at ${sitename} </echo> </target></project>
build.properties
# The Site Namesitename=wiki.w3cschool.cnbuildversion=3.3.2
<?xml version="1.0"?><project name="Hello World Project" default="info"> <property file="build.properties"/> <target name="info"> <echo>Apache Ant version is ${ant.version} - You are at ${sitename} </echo> </target></project>
build.properties
# The Site Namesitename=wiki.w3cschool.cnbuildversion=3.3.2
总结:无非就是把property的代码进行封装,利于维护与封装。就像java里面的解耦合,把不同的代码层分开管理。 想怎么定义就怎么定义。
注意到上面的练习中,
sitename
是一个自定义属性,执行后映射到一个地址为 “wiki.w3cschool.cn” 的网站上。你可以用这种方式声明任意数量的属性。在上面的例子中,还有一个自定义属性
buildversioin
,它表明了当前构建的版本号。
除了以上提到的两个属性, Ant 还提供了其他内置属性
Ant数据类型: Ant的预定义的数据类型。不要将术语中的数据类型与其它编程语言的数据类型相混
它想表达的是一组已经在产品中配置好的服务。
1.文件集 文件集的数据类型代表了一个文件集合。它被当作一个过滤器。里面有俩个指令用于包括移除匹配某种模式的文件。
dir指令: 显示文件列表。
casesensitive:区分大小写。
dir指令: 显示文件列表。
casesensitive:区分大小写。
可以对文件夹里面的文件进行筛选。
<fileset dir="${src}" casesensitive="yes">
<include name="**/*.java" />
<exclude name="**/*Stub"/>
</fileset>
src 属性指向项目的源文件夹。文件集选择源文件夹中所有的 .java 文件,除了那些包含有 'Stub' 单词的文件。能区分大小写的过滤器被应用到文件集上,这意味着名为 Samplestub.java 的文件将不会被排除在文件集之外
模式集合
一个模式集合指的是一种模式,基于这种模式,能够很容易地过滤文件或者文件夹。模式可以使用下述的元字符进行创建。
? -只匹配一个字符
* -匹配0个或者多个字符
** -递归地匹配0个或者多个目录
下面的例子演示了模式集合的使用。
下面的例子演示了模式集合的使用。
<patternset id="java.files.without.stubs"> <include name="src/**/*.java"/> <exclude name="src/**/*Stub*"/></patternset>
该模式集合能够通过一个类似于下述的文件集进行重用:
<filelist id="config.files" dir="${webapp.src.folder}"> <file name="applicationConfig.xml"/> <file name="faces-config.xml"/> <file name="web.xml"/> <file name="portlet.xml"/></filelist>
文件列表
文件列表数据类型与文件集相类似,除了两点:
文件列表包含明确命名的列表,同时其不支持通配符。
文件列表数据类型能够被应用于现有的或者还不存在的文件中。
文件列表数据类型与文件集相类似,除了两点:
文件列表包含明确命名的列表,同时其不支持通配符。
文件列表数据类型能够被应用于现有的或者还不存在的文件中。
<fileset dir="${src}" casesensitive="yes"> <patternset refid="java.files.without.stubs"/></fileset>
过滤器集合
使用一个过滤器集合数据类型与拷贝任务,你可以在所有文件中使用一个替换值来替换掉一些与模式相匹配的文本。
一个常见的例子就是对一个已经发行的说明文件追加版本号,代码如下:
<copy todir="${output.dir}"> <fileset dir="${releasenotes.dir}" includes="**/*.txt"/> <filterset> <filter token="VERSION" value="${current.version}"/> </filterset></copy>
在这段代码中:
- 属性 output.dir 指向项目的输出文件夹。
- 属性 releasenotes.dir 指向项目的发行说明文件夹。
- 属性 current.version 指向项目的当前版本文件夹。
- 拷贝任务,顾名思义,是用来将文件从一个地址拷贝到另一个地址。
路径:
path
数据类型通常被用来表示一个类路径。各个路径之间用分号或者冒号隔开。然而,这些字符在运行时被替代为执行系统的路径分隔符。
类路径被设置为项目中 jar 文件和类文件的列表,如下面例子所示:
<path id="build.classpath.jar"> <pathelement path="${env.J2EE_HOME}/${j2ee.jar}"/> <fileset dir="lib"> <include name="**/*.jar"/> </fileset></path>
在这段代码中:
- 属性 env.J2EE_HOME 指向环境变量 J2EE_HOME 。
- 属性 j2ee.jar 指向在 J2EE 基础文件夹下面的名为 J2EE jar 的文件。
![](https://i-blog.csdnimg.cn/blog_migrate/31bbb1f3cc43e0abaf8b0fcf84f90123.png)