做金融培训的网站,公司如何做网络营销,大学生校园活动策划书,网站搭建平台源码最近项目中用到了ant构建项目#xff0c;由于之前一直用的maven#xff0c;没接触过ant#xff0c;就抽空补了下ant相关知识。下面分三部分介绍ant:
ant安装ant命令build.xml配置详解
ant安装
直接上官网下载ant包ant官网#xff0c;最新包是apache-ant-1.9.4-bin.zip。…最近项目中用到了ant构建项目由于之前一直用的maven没接触过ant就抽空补了下ant相关知识。下面分三部分介绍ant:
ant安装ant命令build.xml配置详解
ant安装
直接上官网下载ant包ant官网最新包是apache-ant-1.9.4-bin.zip。将其解压到某个目录我的放置在E:\develop目录下
然后配置环境变量增加系统变量ANT_HOME值为ant的解压目录本机目录为E:\develop\apache-ant-1.9.2,修改系统变量Path,追加%ANT_HOME%\bin。
然后打开cmd窗口输入命令ant -version。若正常显示ant版本信息表示安装成功。
ant命令
输入ant -h命令可查看帮助文档如下
ant [options] [target [target2 [target3] ...]]
Options:-help, -h print this message-projecthelp, -p print project help information……
选项有很多下面说明常用的几个选项。
-projecthelp, -p 打印项目帮助信息
-buildfile file 指定buildfile文件名(默认在当前目录下查找build.xml)
-file file 同上
-f file 同上
-lib path 指定类路径 [target]不指定时会执行buildfile中的默认target build.xml配置详解
build.xml就是一个XML文件它包含一个project节点和至少一个target节点target节点包含多个task元素。简单说target节点代表着你的构建目标而该目标是由多个操作/任务task来达成的。
文字描述比较枯燥下面以简单的java项目为例说明如何通过ant发布jar包。
在eclipse中新建一个java项目结构如下 HelloAnt.java内容为
package com.tq.ant;import org.apache.commons.lang.StringUtils;/*** version 1.0* author tangqian*/
public class HelloAnt {public boolean isBlank(String str){return StringUtils.isBlank(str);}public static void main(String[] args) {System.out.println(Hello ant!);}}
其中成员方法isBlank引用到commons-lang-2.5.jar中StringUtils.isBlank()方法。
jdbc.properties包含数据库连接配置信息如下
driverClassNamecom.mysql.jdbc.Driver
db.mysql.urljdbc:mysql://127.0.0.1:3306/test?autoReconnecttrueamp;useUnicodetrueamp;characterEncodingutf8
db.mysql.usernameroot
db.mysql.passwordroot
该项目通过ant打包发布build.xml包含内容如下
?xml version1.0 encodingUTF-8 standaloneno?
project basedir. defaultbuild nameant_testproperty namelib valueE:/workspace/bi_mr_STB/lib /path idant_test.classpathpathelement locationbin /pathelement location${lib}/commons-lang-2.5.jar //pathtarget nameinitmkdir dirbin /copy includeemptydirsfalse todirbinfileset dirsrcexclude name**/*.java //fileset/copy/targettarget dependsinit namebuildecho message${ant.project.name}: ${ant.file} filewww.txt /javac destdirbin debugtrue includeantruntimefalsesrc pathsrc /classpath refidant_test.classpath //javac/targettarget dependsbuild namedistjar destfilehello-ant.jar basedirbinmanifestattribute nameMain-Class valuecom.tq.ant.HelloAnt //manifest/jar/targettarget namecleandelete dirbin /delete filehello-ant.jar //target
/project
下面详解各节点及属性含义
project
根节点代表一个工程 属性说明 name 表示工程名称 basedir 表示基准目录(值为”.”代表当前目录即build.xml所在目录也可采用绝对路径) default 表示默认运行的target(当ant命令没有指定target时,会运行default属性中的target)
target
目标节点代表着一个构建目标 属性说明 name 表示目标名称 depends 表示依赖的target。像上例中dist依赖build,build依赖init也就是说当ant运行dist这个target时会根据依赖关系先运行build,build又会先运行init各个target的执行次序是init-build-dist。即逻辑上的先执行初始化操作然后进行源代码编译最后将class文件打成jar包的过程。
property
设置一个或多个属性可以在其它地方通过${属性名}进行引用 属性说明 name 表示属性名(区分大小写) value 表示属性值 file 表示要加载的属性文件路径该文件可包含多个属性类似jdbc.properties的内容
下面接着说明各个target中tasks含义
mkdir
创建目录
属性说明
dir 表示要创建目录
delete
删除目录或文件
属性说明
dir 表示要删除的目录该目录下的文件和子目录都会被删除
file 表示要删除的文件
echo
向屏幕或文件输出信息
属性说明
message 表示要输出的信息
file 表示信息输出到该文件中(如果指定了该属性信息将不会在屏幕上显示)
level 表示信息级别未指定该属性时的默认级别为warning
copy
拷贝文件或目录
属性说明
todir 表示拷贝到哪个目录下
includeemptydirs 是否拷贝空目录
file 要拷贝的单个文件只针对单个文件的拷贝上例中没有指定该属性而是通过内嵌fileset来指定多个文件
javac
编译源文件
属性说明
srcdir 源文件路径多个源之间用分隔可通过内嵌src元素进行设定如上例
destdir 存放编译后的class文件路径
includes 包含的文件列表多个列表用逗号或空格分隔列表可用通配符指定。该属性省略时所有的.java文件被包含进去
excludes 排除的文件列表多个列表用逗号或空格分隔列表可用通配符指定。
debug 编译时是否显示调试信息
includeantruntime 是否包含ant库路径
classpath 依赖库路径上例中通过内嵌classpath元素进行了设定jar
将class文件打成jar包
属性说明
destfile 将创建的jar包位置
basedir 将被打成jar包的目录或通过内嵌的fileset元素进行设定
includes 包含的文件列表多个列表用逗号或空格分隔列表可用通配符指定。该属性省略时所有的文件被包含进去
excludes 排除的文件列表多个列表用逗号或空格分隔列表可用通配符指定。
可内嵌manifest元素通过设定Main-Class属性来设定jar包的入口类如上例Resource Collections
ant中经常需要指定资源集合主要通过下面元素指定 fileset
属性说明
dir 文件集合的根目录该目录下的文件都会被包含
file 快捷指定单个文件
includes 包含的文件列表多个列表用逗号或空格分隔列表可用通配符指定。该属性省略时所有的文件被包含进去
excludes 排除的文件列表多个列表用逗号或空格分隔列表可用通配符指定。
casesensitive 指定包含或排除模式匹配时是否区分大小写默认区分
可内嵌include、exclude、patternset、filename等元素patternset
模式集合
属性说明
id 唯一标识其它patternset元素通过refid指向该模式
可内嵌include、exclude、includesfile、excludesfile等元素
include exclude
指定单个模式(包含或排除)
属性说明
name 要包含或排除的模式
includesfile excludesfile
指定模式文件
属性说明
name 模式文件名(文件内容为包含或排除模式)
Path-like Structures
在通过ant运行java类或执行编译时都需要指定classpath可通过下面三个元素来指定引用的jar包或class文件
classpath
类路径内嵌在javac,java等元素中表示依赖库路径
属性说明
refid 指向该id对应的元素
location 单个文件或目录目录可以是相对路径或绝对路径相对路径是指相对于工程的基准路径
path 多个location的集合各location以冒号或分号进行分隔一般用来引用预定义的路径如引用环境变量${classpath}
其它说明
可内嵌fileset、pathelement等元素来指定jar文件或目录
path
类路径集合被classpath或其它path引用。
path用法类似classpath元素但是path跟target同级而classpath是内嵌在java或javac元素中。
pathelement
单个类路径内嵌在classpath或path中
属性说明
location 单个文件或目录目录可以是相对路径或绝对路径相对路径是指相对于工程的基准路径
path 多个location的集合各location以冒号或分号进行分隔一般用来引用预定义的路径如引用环境变量${classpath}