Maven 出现到现在也有很长时间了,初识它的感觉至今仍清晰的印在脑海中。现在想来,当时从 Ant 移情 Maven 的想法其实很朴素,就是因为 Maven 可以以网站的形式展现与项目相关的信息,如开发人员列表、各种 Report。这种方式为项目的构建带来了极大的方便,尤其是 Report 的。试想对于产生的 Junit-Report、JavaDoc、CheckStyle、PMD 等报告,如果没有一个统一的入口,每次切换目录是多么令人厌烦的事情!
Maven 无疑是相当成功的,这一点从越来越多的开源项目开始使用 Maven 就可以看出。Maven 取得成功的原因很简单:在简化构建脚本的同时,功能并没有缩水,反而有所增强;提供汇集项目信息的工具,并以相当友好的方式呈现;丰富的插件简化了工作。如此有力的工具出现,自然是争相使用。
新特性
如今 Maven2 已经推出,Maven 的官方网站称,Maven2 相对于 Maven1 是一个相当大的转变,甚至不惜牺牲兼容性来达到这一目的。(为了 Maven1 的用户着想,Maven1 仍在继续他的使命。)如此大的变动到底换来了什么样的结果?
1. 更快、更简单
比起 Maven1 那不急不慢的运行速度,Maven2在速度上有了质的飞跃,甚至与Ant相比也毫不逊色(当然,下载不算)。除此之外,"简化工作,使用业界公认的最佳实践"也是是 Maven2 的另一大主题,其他的新特性无处不在体现 Maven2 为简化工作而做出的努力。
2. 更少的配置文件
Maven1 和 Maven2 主要配置文件的对比:
- Maven1:project.xml、maven.xml、project.properties和build.properties。
- Maven2:pom.xml和settings.xml。
POM是Maven的核心对象模型,在Maven2中POM已由project.xml转移到pom.xml中使用,版本也由3升级为4。对于项目,一般只需要pom.xml就行了。
在Maven2中不需要也不提倡使用maven.xml,原因如下:
- plugin的易用性的增强。
- 散布于maven.xml中的内容难以在不同项目间共享,也不利于维护。在Maven2中建议使用自定义的plugin来封装这些内容。
如果仍期望能够使用类似maven.xml的功能,如<preGoal>,请参考Inserting non-standard build steps using preGoals and postGoals。
在Maven2中,配置使用settings.xml,它取代了原有的project.properties和build.properties。配置在Maven2中存在两种级别:
- 用户级,针对操作系统登录用户而言。一般在$home/.m2/,对于windows用户,就是目录:C:\Documents and Settings\用户名\.m2\settings.xml。
- 全局级:一般在%M2_HOME%/conf/settings.xml,M2_HOME是Maven2的根目录环境变量名。
在settings.xml中可以配置,如本地Repository、proxy等等,关于settings.xml的结构可以从Maven的官方网站上获取。
3. Plugin语言更换
在Maven2中,编写plugin的语言由jelly变更为Java和BeanShell。Java在速度上更有优势,而且开发人员的熟悉程度更高。对于其他的流行脚本,如groovy,Maven的官方网站的意见是,等待其更成熟时再考虑。
4. 提供预定义的目录模板
好的目录结构可以使开发人员更容易理解项目,为以后的维护工作也打下良好的基础。Maven2根据业界公认的最佳目录结构,为开发者提供了缺省的标准目录模板。Maven2的标准目录结构如下:
使用目录模板,可以使pom.xml更简洁。因为Maven2已经根据缺省目录,预定义了相关的动作,而无需人工的干预。以resources目录为例:
- src/main/resources,负责管理项目主体的资源。在使用Maven2执行compile之后,这个目录中的所有文件及子目录,会复制到target/classes目录中,为以后的打包提供了方便。
- src/test/resources,负责管理项目测试的资源。在使用Maven2执行test-compile之后,这个目录中的所有文件及子目录,会复制到target/test-classes目录中,为后续的测试做好了准备。
这些动作在 Maven1 中,是需要在 maven.xml 中使用<preGoal>或<postGoal>来完成的。如今,完全不需要在pom.xml中指定就能够自动完成。在src和test都使用resources,方便构建和测试,这种方式本就已是前人的经验。通过使用Maven2,使这个经验在开发团队中得到普及。
创建标准目录模板,可以通过如下命令:
mvn archetype:create -DgroupId=com.codeline.commons -DartifactId=codelineCommons
|
groupId和artifactId的含义与Maven1中的含义一样,参数artifactId的值会作为项目根目录的名字。除了建立相应的目录之外,Maven2还会创建缺省的pom.xml。
Maven2也考虑到:不同类型的项目需要拥有不同的目录结构。如创建web项目,可以使用命令:
mvn archetype:create -DgroupId=com.mycompany.app
-DartifactId=my-webapp
-DarchetypeArtifactId=maven-archetype-webapp
|
分享到:
相关推荐
Maven2 的新特性.7z 文档选项 打印本页 将此页作为电子邮件发送 级别: 初级 键 胡 (jianhgreat@hotmail.com), 西安交通大学硕士 伟红 胡 (huweih@cn.ibm.com), 工程师,IBM 区域合作伙伴支持...
** Maven 最新版本详解 ** Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。它通过标准化项目构建过程,...无论你是新手还是经验丰富的开发者,理解 Maven 的核心概念和最新特性都是至关重要的。
**Maven2的新特性** 1. **多模块项目管理**:Maven2引入了聚合项目(Aggregation)的概念,可以管理多个子项目,使得大型项目管理更加方便。 2. **更强大的POM**:POM在Maven2中得到了增强,支持继承和依赖管理。...
Maven 的最新版本通常包含了最新的特性和修复,以确保开发人员可以利用最新的技术进行开发。 在描述中提到的下载链接是一个博客文章,它提供了Apache Maven的安装指南。尽管此处没有提供具体的版本信息,但一般来说...
4. **兼容性**:保持与以往版本的兼容性,确保已有的Maven项目可以顺利迁移到新版本。 5. **API改进**:为开发人员提供了更稳定的API,方便创建自定义插件和扩展。 6. **配置更新**:对一些默认配置进行了调整,以...
**Maven 3.5.2 的特性** 1. **性能提升**: Maven 3.5.2对缓存机制进行了优化,提高了构建速度,减少了不必要的网络请求。 2. **更好的错误报告**: 提供更清晰的错误信息和堆栈跟踪,帮助开发者更快地定位问题。 3...
Maven 3.6.0是该工具的一个稳定版本,提供了多项改进和新特性,旨在提高开发效率和增强项目的可维护性。 Maven的核心概念是项目对象模型(Project Object Model,简称POM)。POM是一个XML文件,包含了项目的配置...
** Maven 3.8.6 版本特性 ** - **性能优化**:3.8.6版本的Maven进行了性能改进,加快了构建速度,减少了内存消耗。 - **错误修复**:解决了前一版本中的一些已知问题,提高了稳定性和可靠性。 - **更好的依赖解析**...
7. **Maven 3.5.3 的新特性与改进** - Maven 3.5.3 版本可能包括对之前版本的bug修复,性能优化,以及对Java新版本的支持等。 - 它可能增强了对多模块项目和大型项目构建的处理能力,提高了构建速度和稳定性。 8....
借助Maven的继承特性,可以定义一组父POM,子模块继承这个父POM,共享相同的配置信息,这有助于维护项目结构的一致性。 学习Maven的过程,不仅要掌握如何安装和配置Maven,还要理解Maven的工作机制和项目管理的方法...
Maven3.5.3是该工具的一个稳定版本,提供了许多改进和新特性。 在Maven中,一个项目的核心配置文件是`pom.xml`,它包含了项目的基本信息、依赖库、构建目标等关键信息。Maven通过解析`pom.xml`来理解项目的需求,并...
Maven 3.0是Maven的一个重要版本,它引入了许多改进和新特性,旨在提高开发效率,增强构建过程的可配置性和稳定性。 ### Maven 3.0 的主要改进 1. **并行构建优化**:Maven 3.0 引入了并行构建功能,允许同时编译...
《Maven3实战笔记(全)》是一本全面深入介绍Maven3的实践指南,由一位具有独特风格的作者撰写,以其风趣幽默的方式解析了Maven3的各种核心概念和使用技巧。这本书涵盖了从Maven的基础安装与配置,到复杂的仓库依赖...
随着Java平台的发展,Maven 3.5.0确保与新的JDK版本兼容,允许开发者使用最新的Java特性。这包括对Jigsaw模块系统的支持,这是Java 9引入的一项重大变革,它改变了类路径的概念,为大型项目提供了更好的模块化结构。...
**JDK 1.7**,即Java SE 7(Java Standard Edition 7),是Oracle公司发布的Java平台的一个重要版本,包含了诸多新特性,例如:多 catches 块、try-with-resources 语句、钻石操作符()、动态类型语言支持等。...
在IT行业中,Maven是一个非常重要的工具,尤其对于Java开发者来说,它是项目管理和构建的首选。本篇将详细讲解如何在Mac系统上,特别是配备M1芯片的MacBook上安装...记得保持Maven的更新,以获取最新的特性和修复。
Maven 3.8版本可能引入的新特性包括: 1. **性能优化**:Maven团队持续优化了内部处理机制,以提高构建速度,尤其是在大型项目中。 2. **错误修复**:每个新版本都会解决前一版本中发现的问题,确保更好的稳定性和...
Maven 3.6.0是该工具的一个稳定版本,提供了许多改进和新特性。 在Maven 3.6.0中,用户可以体验到更快的构建速度和更高的稳定性。这个版本优化了内部算法,减少了不必要的网络请求,从而提升了整体性能。此外,它还...
Maven 的另一个重要特性是依赖管理。它使用一种称为传递性依赖的概念,意味着如果项目A依赖于项目B,而项目B又依赖于项目C,那么Maven会自动处理项目A对项目C的依赖,无需在项目A的POM中显式声明。 对于初学者来说...
**六、Apache Maven 3.3.9 特性** - 提供了对HTTP代理更好的支持,包括NTLM代理。 - 改进了依赖解析和冲突解决,减少了不一致性和错误。 - 更强的性能优化,提高了构建速度。 - 引入了新的设置文件格式,增强了安全...