`

Maven与Ant比较

 
阅读更多

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 之比较

    标题“Maven 与 Ant 之比较”表明了本文将探讨两种在Java开发中广泛使用的构建工具——Maven和Ant。它们的主要功能是管理和自动化项目的构建过程,包括编译源代码、运行测试、打包应用以及部署。通过对两者进行对比...

    maven-ant-tasks-2.1.3.zip

    《Maven Ant Tasks 2.1.3:构建与集成利器》 在软件开发领域,Maven 和 Ant 是两种广泛使用的构建工具。Maven 以其强大的依赖管理和项目生命周期管理功能著称,而 Ant 则以其灵活性和可定制性受到开发者青睐。然而...

    maven-ant-tasks.jar

    还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。。。 maven-ant-tasks.jar

    通向架构师的道路(第二十三天)maven与ant的奇妙整合.docx

    Maven 与 Ant 的奇妙整合 Maven 和 Ant 是两种常见的自动化构建工具,它们都有其独特的优点和缺点。在本文中,我们将探讨如何将 Maven 和 Ant 整合,以充分发挥两者的优势。 一、Maven 介绍 Maven 是一款基于项目...

    maven-ant-tasks-2.1.3-src

    The Mavent Ant Tasks allow several of Maven's artifact handling features to be used from within an Ant build. These include: Dependency management - including transitive dependencies, scope ...

    Maven2.Ant.Junit合集

    与Ant相比,Maven通过预定义的生命周期和约定优于配置的原则,简化了项目的构建过程。Maven的依赖管理系统能自动解决库版本冲突,而其插件系统则允许扩展以完成特定的任务。 4. **Maven2构建**: Maven2的构建过程...

    maven安装和使用

    #### 三、Maven与Ant比较 Maven与Ant都是Java项目构建工具,但二者存在显著差异: 1. **POM概念**:Maven的核心是POM,这是一个XML文件,用于定义项目的结构、依赖以及其他配置信息。相比之下,Ant的构建文件更...

    maven-ant-tasks:Apache Maven ant任务的镜像

    "Maven-ant-tasks"是一个Java库,提供了Ant任务,这些任务可以与Maven交互,如执行Maven目标、解析POM(Project Object Model)文件、处理依赖关系等。这使得开发者能够在Ant构建脚本中使用Maven的特性,如自动下载...

    maven下通用的ant配置文件

    maven下通用的ant配置文件,只要0积分。只需修改11行末尾的target/自己的工程名即可。

    maven-definitive-guide.pdf

    **2.6 Maven与Ant比较** 尽管Maven和Ant都是Java项目的构建工具,但它们的设计理念有所不同。Ant更加灵活,允许用户自定义构建过程;而Maven则强调标准化和自动化,通过约定来减少配置。 #### 三、Maven安装与运行 ...

    maven ant thrift0.9.0

    与Ant相比,Maven更加自动化,依赖管理更为强大。Apache-maven-3.0.5-bin.zip是Maven的二进制包,解压后可以直接使用。 将这三个工具结合使用,可以高效地构建和管理使用Thrift的项目。例如,你可以使用Ant来定义...

    maven definitive guide

    - **Maven与Ant比较**:Maven相比Ant的一个显著区别在于它的项目对象模型(POM),这使得Maven能够自动处理许多构建相关的任务,而无需显式配置。 #### 三、安装与运行Maven - **Java环境验证**:确保安装了正确...

    Maven入门指南.docx

    **Maven与Ant比较** 虽然Ant也是常见的构建工具,但它更依赖于XML脚本来定义构建过程,而Maven的POM模型则更为简洁和规范,能够自动处理大部分构建任务,减少了手动配置的复杂性。然而,对于某些特定需求,Ant的灵活...

    maven compare to the ant

    本文将重点比较Maven和Ant两种流行的构建工具,分析它们的特点、优势以及应用场景。 #### Maven与Ant的基本介绍 1. **Apache Ant**: - **定义**:Ant是一款用Java编写的开源构建工具。 - **特点**:基于XML配置...

    apache tomcat,maven,ant下载

    Apache Tomcat、Maven 和 Ant 是Java开发和部署中不可或缺的工具。让我们分别详细了解一下这三个重要组件及其在Java生态系统中的作用。 Apache Tomcat是一个开源的Servlet容器,它实现了Java Servlet和JavaServer ...

    ant与maven使用指导

    ant学习指导文档 maven配置 maven常见问题问答 对于初学或想深入了解maven的童鞋以指导

    Maven2 配置指南(java 项目管理之路)

    6. **Maven与Ant比较** - **区别**:与Ant相比,Maven更侧重于项目的整体管理和构建过程的自动化。 - **优势**:Maven能够更好地处理大型项目,支持依赖管理等功能。 7. **总结** - **结论**:Maven通过其独特的...

    J2EE JNDI配置原理详解 JBOSS安装配置 Maven入门 Ant使用入门

    1.11 Maven Ant之间的比较 1.12 详解MANIFEST.MF文件 1.13 Maven入门--概念与实例 1.14 Subversion 1.15 jar war ear区别 1.16 如何在Eclipse中调试JBoss应用 1.17 JBoss 5.0 安装与配置详解 1.18 JBOSS安装...

    maven-ant-tasks-2.1.3

    The Mavent Ant Tasks allow several of Maven's artifact handling features to be used from within an Ant build. These include: Dependency management - including transitive dependencies, scope ...

    jboss seam maven ant jdk

    【标题】 "jbos seam maven ant jdk" 涉及的关键技术点主要涵盖了四个核心领域:JBoss Seam、Maven、Ant以及Java Development Kit(JDK)。这些技术在Java开发环境中扮演着至关重要的角色,特别是对于企业级应用的...

Global site tag (gtag.js) - Google Analytics