参考
http://tech.it168.com/a2010/1108/1123/000001123274_all.shtml
http://www.developer.com/java/article.php/3908561/article.htm
6年了,我们终于等来了Maven 3,Maven 2虽然达到了一定的高度达,但它有两个死穴,一是难以扩展,二是它的代码难以理解,在Maven 3中,许多功能都进行了改造,消灭了Maven 2一直被人诟病的许多问题,在这篇文章中,我将介绍Maven 3的10大新特性。
1、向后兼容
Maven创始人,Sonatype公司的CTO Jason van Zyl表示“Maven 3是为用户构建的”,很明显,他的意思是Maven 3.0将会全面取代Maven 2.x,Maven 3开发人员尽了最大努力,确保Maven 2.x用户顺利过渡到Maven 3.0,如果出现重复依赖,插件声明或未指定插件版本号,Maven 3.0将会发出警告,这里我强烈建议你在POM中修复这些问题,因为Maven 3的未来版本可能不会支持生成畸形的项目。我已经尝试将我的多模块项目移植到Maven 3,同样,我收到了上述的警告,但我并没有遇到任何问题或生成时错误,Maven 3.0是可以兼容Maven 2.x的。
2、性能改善
我迁移到Maven 3最重要的一个原因是它的速度,更好的磁盘I/O,网络I/O,CPU利用率和更低的内存消耗,经过优化的Maven 3比Maven 2.x快50-400%,更快的生成速度显著提高了开发人员的生产力,我用Maven 3运行我的项目用时不到2分钟,而此前在Maven 2.x上需要耗时3分钟,值得注意的是我并没有开启并行生成功能,凭这一点,你就应该尽快去下载Maven 3亲自试一试。
3、自动指定父版本
在Maven 2中,你必须在子模块中指定父版本,当你在新版本上开发时,这是一个维护问题,Maven 3.1将会消除在子模块上指定父版本的需要。
4、并行生成
Maven 3引入了并行生成功能,它可以分析你的项目依赖图,允许你并行生成调度模块,使用下面的命令开启项目的并行生成功能。
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->mvn -T 2 clean install mvn -T 2C clean install
第一个参数(-T 2)表示使用两个线程并行生成项目,第二个参数(-T 2C)表示每个处理器核心上使用两个线程生成项目,借助并行生成功能,可以让生成速度提升20-50%,但目前并行生成还处于实验阶段,将来不排除发生变化的可能性,因此我建议你现在不要在生产系统中使用它。
5、更好的错误和完整性报告
Maven 3改善了错误报告,它会在错误报告中提供指向Maven Wiki页面的链接,这样你可以查看更全面的错误描述和可能的原因,如图1所示,例如,当我未指定子模块的父版本时,运行子模块将会获得一条错误消息。注意:在Maven 3.1中将不再需要为子模块指定父POM版本号。
▲图1 Maven 3.0错误报告
6、插件扩展点
在Maven 3中,你可以挂上不同的扩展点以便修改插件行为,在Maven 2中你只能直接扩展插件,这个功能是Maven开发团队从Eclipse借来的理念,例如,你可以定义一个扩展点修改web.xml由WAR插件来处理。
7、Mixin
Mixin允许你使用参数化的POM片段来组成POM,而不是继承,但这个功能需要等到Maven 3.1发布才能使用,这些Mixin将被部署到仓库,然后使用标准的坐标进行引用,例如,如果你想使用我的项目的发布过程,在Maven 2时代,你必须继承我的项目的Maven POM,因为Mixin是由插件和配置组成的,它们是可以参数化的,你可以用它们组成你的POM。
8、Maven Shell
Maven Shell是Maven的命令行接口,它可以提高你的生成速度,因为它可以缓存解析过的POM,避免重复调用Maven的启动成本,它也支持和Maven Archetype集成,并提供Nexus整合,它包括了一个内置的帮助系统,在Mac OS X上,它提供了Growl支持,Maven Shell不属于Maven发行包的一部分,需要单独从这里下载。
在操作系统命令提示符后输入mvnsh即可启动Maven Shell,输入help可以查看Maven Shell支持的所有功能,如图2所示。
▲图2 Maven Shell功能
9、多语言生成
Polyglot Maven是Maven 3非常有特色的一项功能,它允许你以非XML格式编写POM文件,Maven内核提供了一个底层DSL访问Maven内部,你可以用你熟悉的语言编写POM文件,目前支持的语言包括Groovy,Ruby,Scale,Clojure,YAML等,Polyglot Maven希望推动不喜欢XML的人使用Maven。
Polyglot Maven未捆绑在Maven 3中,需要单独从这里下载,它包括一个叫做translator的工具,这个工具可以将你的XML POM转换成Groovy,Scala或YAML格式的POM,例如,使用下面的命令可以将一个XML POM转换成Scala POM。
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->translate pom.xml pom.scala
因此pom.xml
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><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" target=newFrame>
<modelVersion>4.0.0</modelVersion>
<groupId>com.shekhar</groupId>
<artifactId>polygot-maven-test</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>polygot-maven-test</name>
<url>http://maven.apache.org</url>
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
<dependencies><dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
转换成Scala格式就是
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->project {
m => m.artifactId = "polygot-maven-test"
m.dependency
{
d => d.artifactId = "junit"
d.groupId = "junit"
d.optional = false
d.scope = "test"
d._type = "jar"
d.version = "3.8.1"
}
m.groupId = "com.shekhar"
m.modelVersion = "4.0.0"
m.name = "polygot-maven-test"
m.packaging = "jar"
m.properties += ("project.build.sourceEncoding" -> "UTF-8")
m.url = "http://maven.apache.org" m.version = "1.0-SNAPSHOT"}
10、M2Eclipse
M2Eclipse让Maven可以和Eclipse集成,M2Eclipse目前最新版本是0.10.0,它已经用Maven 3的嵌入式API进行了重写,M2Eclipse的性能得到了明显提升(根据该项目的网站描述,大约提升了200-500%),因为M2Eclipse在Maven POM中提供了额外的XML元数据,它们只能由M2Eclipse识别。
分享到:
相关推荐
模型版本的变化非常少,但它仍然是必不可少的,以确保Maven引入新的特性或模型变更时的稳定性。 * modelVersion:声明项目描述符遵循哪一个POM模型版本。 3. 项目信息(Project Information) 项目信息是Pom.xml...
安装插件后,可以创建新的Maven项目,指定`<groupId>`、`<artifactId>`和`<packaging>`,然后在POM文件中添加依赖和父项目的引用。 Maven聚合(Aggregation)功能则允许我们将多个Maven项目组合成一个单一的构建...
跨平台项目信息:Maven项目可以在任何平台上构建,具有跨平台的特性。 插件和目标:Maven使用插件来执行任务,每个插件可以有多个目标,允许用户执行特定的构建任务。 继承:子项目可以继承父项目的配置,减少配置...
** Maven 最新版本详解 ** Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。它通过标准化项目构建过程,简化了项目的构建、依赖管理和文档生成。在本篇文章中,我们将深入探讨 Maven 的最新...
7. **Maven 3.5.3 的新特性与改进** - Maven 3.5.3 版本可能包括对之前版本的bug修复,性能优化,以及对Java新版本的支持等。 - 它可能增强了对多模块项目和大型项目构建的处理能力,提高了构建速度和稳定性。 8....
通过以上介绍,我们可以看到Maven 3.0在项目管理和构建过程中扮演着重要角色,其改进和特性极大地简化了Java开发者的日常工作。通过熟练掌握Maven,开发者可以高效地构建、测试和部署项目,提高开发效率。
** Maven安装包与Maven安装步骤详解 ** Maven,作为Java项目管理和构建工具,是开发者不可或缺的一部分。它简化了构建过程,通过依赖管理和项目对象模型(Project Object Model,POM)来统一项目的构建配置。以下将...
### Maven的生命周期和插件详解 #### Maven生命周期概述 Maven是一个项目管理和综合工具,它通过一系列预定义的任务和明确的构建生命周期来管理项目的构建、报告和文档。Maven的核心特性之一是其生命周期...
通过本文的介绍,我们可以了解到Maven的基本概念、安装配置、基本使用和深入应用详解。 Maven的基本概念包括POM(Project Object Model,项目对象模型)、标准集合(archetype)、项目生命周期和依赖管理系统。POM...
尽管模型版本很少变化,但在Maven引入新特性或模型变更时,它是确保向后兼容性的关键。 ### 坐标(Coordinates) Maven项目的坐标由`groupId`、`artifactId`和`version`三部分组成,它们共同构成了项目在Maven世界中...
** Maven 3.5.4 打包工具详解 ** Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它通过使用一种标准的项目对象模型(Project Object Model, POM),自动化构建过程,管理依赖关系,并执行各种生命周期...
### Maven介绍及配置详解 #### 一、Maven概述 Maven是由Apache软件基金会支持的一款项目管理和理解工具,主要用于Java项目的构建与管理。Maven通过一个中心信息来管理项目的构建、报告和文档,大大简化了Java项目...
模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当 Maven 引入了新的特性或者其他模型变更的时候,确保稳定性。 3. `<groupId>`:项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他...
了解和掌握Maven的使用对于Java开发人员来说至关重要,因为它极大地提高了开发效率和项目协作的便利性。通过深入研究Maven的配置和POM.xml的编写,你可以更好地控制项目的构建过程,并且能够更有效地利用Maven提供的...
** Maven3 Eclipse Plugin详解 ** Maven3 Eclipse Plugin是Maven项目管理和构建工具与Eclipse IDE集成的关键组件,它使得开发者能够在Eclipse环境中方便地利用Maven的强大功能。Maven是一个广泛使用的Java项目管理...
这是为了确保当 Maven 引入新特性或其他模型变更时,能够保持稳定性。 ##### 3. `<groupId>`、`<artifactId>` 和 `<version>` 元素 - **用途**:定义项目的唯一标识符。 - `<groupId>`:项目的全球唯一标识符,...
** Maven 3.3.9 知识点详解 ** Maven 是一个强大的构建工具,主要用于Java项目的构建、管理和依赖管理。Maven 3.3.9 是该工具的一个稳定版本,它在之前的版本基础上进行了优化和改进,提高了构建效率和用户体验。在...