进阶干货!!!ant与maven的介绍与区别
Ant与Maven介绍
1 Ant
1.1 Ant简介
Ant是一种基于Java的build(编译,打包)工具。
这里首先我们来回顾一个知识点,一段java程序编写完成后,是怎么部署到服务器上进行测试?
我们都知道最原始的操作是敲命令行,假如你编写好一段输出helloword程序,版本发布需要哪些指令呢?
你需要进行编译,打包和运行,具体如下:
# 进入工作目录
# cd workspace
# 将.java文件编译成.class文件
# javac classname.java
# 运行程序
# java classname
# 打包
# jar cvf demo.jar com(cvf创建并显示详细信息;com是源码最上层目录)
# 运行
# java -jar demo.jar
随着.java文件,以及依赖的包不断增加,发布一个完整的项目采用命令行的方式会显得非常的复杂和重复。于是市场上诞生了很多基于java的build工具,如ant和现在市场上主流的maven。
1.2 Ant项目目录结构

1.3 Ant发布版本
一个Ant项目的构建主要分一下几步
1.3.1安装Ant
(1)官网下载,此处省略
(2)配置环境变量
# 注意是Ant的安装目录,不是bin子目录
# SET ANT_HOME=D:/jakarta-ant-1.5.1
# SET PATH=%PATH%;%ANT_HOME%/bin;
(3)验证是否安装成功
# ant -version
1.3.2认识build.xml文件
(1)这就是一个简单的ant文件
<project default="hello">
<target name="hello">
<echo message="hello , ant">
</target>
</project>
(2)保存为build.xml文件,进入文件所在目录:输入ant
# cd /path
# ant
会看到

分析:从上面的例子中,我们可以看到。build.xml简单的有以下级别:
·project(project标签是build文件的根元素,可以包括一个或多个target,default属性是必须的,并且指明默认执行的target。因为ant命令无参数指定时会运行default target)
·target(这个在后面有更深入的讨论,这里只要知道target的name属性是必须的就好了)
·task(ant中的最小单元,一般就是执行一些命令了)
这个树形关系是最基本的build文件结构。
1.3.3创建一个可以:编译-打包-运行程序的build.xml文件

(1)这个工程的默认执行是compile。这个target的task是执行javac 命令(ant所支持的命令,后面的“java”也是)编译java文件。
srcdir指定要编译的Java文件的所在位置。
(2)第二个target是jar,后面这个depend="compile"很关键。
表明命令之间的以来关系(我们总不能不编译就打包或者运行吧)。
注意一下,在jar任务里还指定生成manifest(manifest包含了应用描述、接口声明、页面路由信息的java配置文件)文件
(3)最后一个是run这个target,运行就是调用java命令就可以了,指定好相应的参数。
另外,fork="true"表示请求用一个新的JVM运行。
1.3.4 Ant运行
这里以3创建的build.xml为例
# 编译
# ant compile
# 打包
# ant jar
# 运行
# ant run
1 Maven
1.1 Maven简介
Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。Maven除了具备Ant的功能外,还增加了以下主要的功能:
1)使用Project Object Model来对软件项目管理;
2)内置了更多的隐式规则,使得构建文件更加简单;
3)内置依赖管理和Repository来实现依赖的管理和统一存储;
4)内置了软件构建的生命周期;
1.2 POM(Project Object Model)
每一个Maven工程都包含一个pom.xml文件,存储了该工程相关的信息,从而达到一定的项目管理的功能。例如包含了工程的配置,工程的路径,依赖等信息。
典型的pom.xml如下:

1.3 Maven项目目录结构

英文版

1.4依赖管理和Repository
Maven的dependence management用来管理所有此project的dependences,且在dependence repository中自动查找和下载dependence。
1) 依赖管理
例如以引用MySQL的jar包为例,如下:
< dependencies>
< dependency>
< groupId>mysql
< artifactId>mysql-connector-java
< version>5.1.2
< /dependency>
< dependencies>
< /dependencyManagement>
< groupId>mysql
< artifactId>mysql-connector-java
< /dependency>
2)dependence repository
更好的办法是公司或每个team有自己的repository,例如下图:
Local Repository:本地仓库,自己使用的仓库
Maven Central Repository:Maven中心仓库,远程下载线上分享的可用依赖
Term Central Repository:团队开发的共享仓库

1.5 Maven内置的生命周期
maven内置的生命周期有三个default,clean和site
1.5.1 default生命周期
构建生命周期主要有以下几个阶段:
·
validate,验证工程是否正确,所有需要的资源是否可用。
·
compile,编译项目的源代码。
·
test-compile,编译项目测试代码。
·
test,使用已编译的测试代码,测试已编译的源代码。
·
package,已发布的格式,如jar,将已编译的源代码打包。
·
integration-test,在集成测试可以运行的环境中处理和发布包。
·
verify,运行任何检查,验证包是否有效且达到质量标准。
·
install,把包安装在本地的repository中,可以被其他工程作为依赖来使用
·
deploy,在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
·
generate-sources,产生应用需要的任何额外的源代码,如xdoclet。
构建生命周期是每个Maven工程的核心。
1.5.2 clean生命周期
处理工程的清理工作,包含3个阶段:pre-clean, clean, post-clean。
1.5.3 site生命周期
处理工程site文档的生成和部署,包含下列阶段:
pre-site, site, post-site 和site-deploy,其中site-deploy用来将site文档部署到指定的web server上。
1.6 Maven常用指令
# 清空
# mvn clean(清除编译后目录,默认是target目录)
# 编译
# mvn compile
# 打包
# mvn package
# 运行测试
# mvn test
# 安装jar包到本地仓库中
# mvn install xxx
更多推荐
所有评论(0)