[转载]ant和maven的区别
Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。Maven除了具备Ant的功能外,还增加了以下主要的功能:
1)使用Project Object Model来对软件项目管理;
2)内置了更多的隐式规则,使得构建文件更加简单;
3)内置依赖管理和Repository来实现依赖的管理和统一存储;
4)内置了软件构建的生命周期;
一 POM(Project Object Model)与项目管理
每一个Maven工程都包含一个pom.xml文件,其他存储了该工程相关的信息,从而达到一定的项目管理的功能。例如包含了工程的配置,缺陷跟踪系统信息,工程的组织,许可协议,工程的路径,依赖等信息。
典型的pom.xml如下:
<project … >
<modelVersion>4.0.0</modelVersion>
<!-- The Basics -->
<groupId>...</groupId>
< artifactId>...</artifactId>
< version>...</version>
< packaging>...</packaging>
< dependencies>...</dependencies>
< parent>...</parent>
< dependencyManagement>...</dependencyManagement>
< modules>...</modules>
< properties>...</properties>
<!-- Build Settings -->
<build>...</build>
< reporting>...</reporting>
<!-- Project Meta Data -->
<name>...</name>
< description>...</description>
< url>...</url>
< inceptionYear>...</inceptionYear>
< licenses>...</licenses>
< organization>...</organization>
<developers>...</developers>
< contributors>...</contributors>
<!-- Environment -->
<issueManagement>...</issueManagement>
< ciManagement>...</ciManagement>
< mailingLists>...</mailingLists>
< scm>...</scm>
< prerequisites>...</prerequisites>
< repositories>...</repositories>
< pluginRepositories>...</pluginRepositories>
< distributionManagement>...</distributionManagement>
< profiles>...</profiles>
< /project>
二 隐形的规则和简单的构建文件
Maven工程的目录结构必须为如下的结构
Maven还有内置的构建生命周期,内置定义了build,test,package,deploy等task。
由于Maven工程目录的规则和内置的构建生命周期,从而使得构建文件简单,例如如下的构建文件中甚至没有出现build,package等task的定义,但是我们已经可以调用wvm package等内置的task了:
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>Maven Quick Start Archetype</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
三 依赖管理和Repository
Maven的dependence management用来管理所有此project的dependences,且在dependence repository中自动查找和下载dependence。
1) 依赖管理
例如工程以来MySQL如下:
<dependencyManagement>
< dependencies>
< dependency>
< groupId>mysql</groupId>
< artifactId>mysql-connector-java</artifactId>
< version>5.1.2</version>
< /dependency>
< dependencies>
< /dependencyManagement>
<dependency>
< groupId>mysql</groupId>
< artifactId>mysql-connector-java</artifactId>
< /dependency>
2)dependence repository
更好的办法是公司或每个team有自己的repository,例如下图:
四 构建生命周期的定义
构建生命周期显式地定义了构建,测试,和发布的过程,是每个Maven工程的核心。Maven包含了3个内置的生命周期:default,clean和site。
1)default生命周期处理了工程的编译,测试和部署,他一共包含20多个阶段,主要的阶段如下:
Validate: 验证所有的工程信息是否可用且正确
Compile: 编译源代码
Test: 在一套framework下运行但愿测试
Package: 以发布的格式打包编译的代码
Integration-test: 在集成测试环境中处理(部署)发布包
Verify: 检测发布包是否正确可用
Install: 在本地的repository上安装发布包
Deploy: 在远程的repository上安装发布包
以上的阶段具有先后顺序,执行某个阶段时,此阶段前的所有阶段都会被自动地执行。
2)clean生命周期处理工程的清理工作,包含3个阶段:pre-clean, clean, post-clean。
3)site生命周期处理工程site文档的生成和部署,包含下列阶段:
pre-site, site, post-site 和site-deploy,其中site-deploy用来将site文档部署到指定的web server上。
完!
[转载]ant和maven的区别的更多相关文章
- 服务端技术进阶(六)Ant和Maven的作用是什么?两者之间功能、特点有哪些区别?
服务端技术进阶(六)Ant和Maven的作用是什么?两者之间功能.特点有哪些区别? Ant和Maven都是基于Java的构建(build)工具.理论上来说,有些类似于(Unix)C中的make ,但没 ...
- Apache Ant和Apache Maven的区别
Apache Ant和Apache Maven的区别 分类: ANT Maven 2013-12-10 18:47 1477人阅读 评论(26) 收藏 举报 ———摘自<maven权威指南> ...
- Ant和Maven的作用是什么?两者之间功能、特点有哪些区别?
Ant和Maven都是基于Java的构建(build)工具.理论上来说,有些类似于(Unix)C中的make ,但没有make的缺陷. Ant是软件构建工具,Maven的定位是软件项目管理和理解工具. ...
- 【转载】常用Maven插件介绍
http://www.cnblogs.com/crazy-fox/archive/2012/02/09/2343722.html 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构 ...
- Maven Gradle 区别
Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你就会发现曾经大红大紫的技术已经成为了昨日黄花,当然,Maven也不会例外.虽然目前它基本上是Java构建的事实标准,但我们 ...
- Ant和Maven
Ant和Maven都是基于Java的构建(build)工具.理论上来说,有些类似于(Unix)C中的make ,但没有make的缺陷.Ant是软件构建工具,Maven的定位是软件项目管理和理解工具. ...
- 转载>>C# Invoke和BeginInvoke区别和使用场景
转载>>C# Invoke和BeginInvoke区别和使用场景 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是dotnet程 ...
- Java 中三大构建工具:Ant、Maven和Gradle
Java世界中主要有三大构建工具:Ant.Maven和Gradle 目前:Ant已经销声匿迹.Maven也没落了,而Gradle的发展则如日中天. Maven的主要功能主要分为5点,分别是依赖管理系统 ...
- 深入了解gradle和maven的区别
目录 简介 gradle和maven的比较 可扩展性 性能比较 依赖的区别 从maven迁移到gradle 自动转换 转换依赖 转换repositories仓库 控制依赖的版本 多模块项目 profi ...
随机推荐
- nginx最简单的网站配置:单主机+静态文件
1.域名绑定主机:新建一个A记录,将www的子域名绑定到主机的ip上:2.主机的nginx设置监听端口,绑定域名,修改网站根目录路径和默认首选文件:/etc/nginx/conf.d 这个目录中新建一 ...
- spark运行方式及其常用参数
yarn cluster模式 例行任务一般会采用这种方式运行 指定固定的executor数 作业常用的参数都在其中指定了,后面的运行脚本会省略 spark-submit \ --master yarn ...
- hdu-5718 Oracle(水题)
题目链接: Oracle Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) ...
- 【BZOJ 3223】 文艺平衡树
[题目链接] 点击打开链接 [算法] 本题是splay区间操作的模板题 我们每个点的权值设为”当前在序列中的排名“,根据二叉排序树的性质,这棵树的中序遍历就是当前序列 如果我们要获得一段区间[l,r] ...
- RadioGroup和RadioButton
Activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...
- 移动web开发------公用css----自己总结
@charset "utf-8"; html, body { background: #fff; color: #505050; font-size: 10px; -moz-use ...
- 【198】Synergy - 鼠标键盘共享软件
参考:Synergy X64 v1.7.4 官方最新版 参考:Synergy安装方法 功能介绍: 可以将配置局域网的电脑实现同一个鼠标键盘控制两台电脑,效果类似一台电脑使用双屏的效果,键盘会根据鼠标的 ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again
深入的将Model验证 手动添加验证的错误 view里面显示每个属性的验证错误信息 显示整个model级别错误 自定义验证 如果业务逻辑需要比较复杂的验证.而且这个验证逻辑可能到处复用的话就应该考虑使 ...
- e_pro list 1
uncle n. 叔叔; 伯父; 舅父; 姑父,姨父; farm n. 农家; 农田; 农场,农庄; 畜牧场; corner n. 拐角; 角落,角; 困境; [商] 囤积; vi. 驾车转 ...
- AGC031 A~C
A题意:给定字符串s,求无重复字符子序列个数(子序列相同位置不同算不同) 在最后加一串a~z表示选了这些就是不选这个字符了,然后答案就是每次选每个字符位置的方案数的积 #include<iost ...