Maven与Ant比较(转载 iTech's Blog)+CSDN其他博主博客内容(备忘复习)

Maven与Ant比较

原文地址https://www.cnblogs.com/itech/archive/2011/11/01/2231837.html

 

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上。

Maven和Ant的区别

2015年06月30日 21:57:19 韩义 阅读数:4279更多

个人分类: 【Maven】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hy6688_/article/details/46701061

 

最近做的项目中一直是在使用maven,但是要知道最早出来的构建工具是Ant,现在Ant依然有好多人再用,于是自己就抽出来时间,学习了一下Ant的基本的使用。这样也能跟好的理解Maven提供的新特性。 

首先说一下他们各自的作用: 

Ant的作用:是一种基于Java的build工具

  1. 可以用ant编译java类,生成class文件
  2. ant可以自定义标签、配置文件,用于构建。
  3. ant可以把相关层构建成jar包 。
  4. ant把整个项目生成web包,并发布到Tomcat  

Ant的优点:

  1. 跨平台性:Ant是纯Java语言编写的,因此具有很好的跨平台性。
  2. 操作简单:Ant是由一个内置任务和可选任务组成的。Ant运行时需要一个XML文件(构建文件)。
  1. Ant通过调用target树,就可以执行各种task:每个task实现了特定接口对象。由于Ant构建文件时XML格式的文件,所以很容易维护和书写,而且结构很清晰。
  2. Ant可以集成到开发环境中:由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环境中去。 

Maven的作用: 除了以程序构建能力为特色之外,还提供高级项目管理工具。 

Maven除了具备Ant的功能外,还增加了以下主要的功能:

  1. 使用Project Object Model来对软件项目管理;
  2. 内置了更多的隐式规则,使得构建文件更加简单;
  3. 内置依赖管理和Repository来实现依赖的管理和统一存储;
  4. 内置了软件构建的生命周期;

Maven的优点:

  1. 拥有约定,知道你的代码在哪里,放到哪里去
  2. 拥有一个生命周期,例如执行 mvn install就可以自动执行编译,测试,打包等构建过程
  3. 只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情
  4. 拥有依赖管理,仓库管理 

整体的比较:

       Ant将提供了很多可以重用的task,例如 copy, move, delete以及junit单元测试Maven则提供了很多可以重用的过程。我们可以把 Maven看成是一个"build container"这个容器可以让我们重用从一系列的项目中抽像出来的build过程。

   使用过Ant的朋友都会有这样的体会吧。Ant提供的task级别描述,我们可以通过想写shell一样一个Java项目的build过程来进行描述。我们可以写好一个build.xml文件,来解决我们在Java程序运行编译过程中需要解决的classpath,以及相关参数的配置问题,只有是项目中的主要结构以及依赖的库不变,我们很少去修改build.xml。但是如果我们要开发一个新的项目即使原有项目的build.xml写的即使再好,其能够复用得模块还是比较少的。特别是对项目的结构进行修改后,想不修改build.xml都很困难。这是因为Ant所提供的可重用的task粒度太小,虽然灵活性很强,但是我们需要纠缠很多细节的东西。

   正如你所在使用Servlet容器时,并没有告诉它如何去解包WAR文件,在你使用Maven时,你也不需要告诉Maven如何build你的项目。Maven提供了一套抽象层用来分离项目的build逻辑。许多人一开始就被Maven所提供的依赖管理(可以通过XML来描述项目所依赖的库的关系)打动,但是使用Maven的主要好处还是它能为提供一个标准的开发构架用来对多个项目进行管理。依赖管理只是这个标准开发构架所提供的一个副产品。

   如果想让Maven实现某个build过程,例如compile, test, install,我们可以通过写plugin的方式,很容易就实现build过程的复用。Maven可以为我们提供一个很舒适的build环境,我们不需要通过build.xml定义繁琐的build过程,只需要告诉这些build过程的plugin,我现在的文件依赖的那些第三方库,我需要实现什么样的build功能,就足够了。那些繁琐的路径配置信息,以及复杂的第三方库下载设置,你通通不用考虑, Maven 以及它的plugin都帮你实现了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值