- 浏览: 1593994 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
payton321:
dao,util,servie,基础模块应该是maven项目, ...
Maven最佳实践:划分模块 -
AdrainHuang:
深有体会,我这边已经 给项目坑死了,依赖关系太复杂,基本没人敢 ...
Maven最佳实践:管理依赖 -
远方_张涛:
赞赞赞,生动有趣还说明问题
Maven最佳实践:版本管理 -
smartdog:
新的网站访问不了啊~~博主快更新
再见JavaEye -
smartdog:
言简意赅,厉害
Maven最佳实践:遵循约定
Maven3的开发已经完成大半,本周末将发布alpha-3(Twitter @jvanzyl),而Nexus已经开始使用Maven3进行构建,于是我也开始使用Maven3。
从http://svn.apache.org/repos/asf/maven/maven-3/trunk 签出最新的maven3代码,然后使用maven2进行build,build完毕之后,便能得到Maven安装文件apache-maven/target/apache-maven-3.0-SNAPSHOT-bin.zip ,接着升级本地的maven2至maven3,检查安装如下:
Apache Maven 3.0-SNAPSHOT (r833360; 2009-11-06 19:53:14+0800)
Java version: 1.6.0_11
Java home: /usr/local/jdk1.6.0_11/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "2.6.27-7-generic" arch: "i386" Family: "unix"
Maven本身提倡的一个原则是,不要使用任何外部的SNAPSHOT依赖,这里我却在使用SNAPSHOT的Maven,未免有些讽刺的意味,因此难免有些担心。不过,build完Nexus之后,我的担心就消除了,使用maven3 build Nexus没有出现任何问题。而且从build输出我就发现maven3的一大优点,build输出更加明了:
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.2:clean (default-clean) @ nexus-api ---
[INFO] Deleting directory /home/juven/workspaces/ws-nexus/nexus/nexus-api/target
[INFO]
[INFO] --- maven-resources-plugin:2.4:resources (default-resources) @ nexus-api ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/juven/workspaces/ws-nexus/nexus/nexus-api/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ nexus-api ---
[INFO] Compiling 191 source files to /home/juven/workspaces/ws-nexus/nexus/nexus-api/target/classes
[INFO]
[INFO] --- plexus-component-metadata:1.2.1:generate-metadata (process-classes) @ nexus-api ---
[INFO] Discovered 1 component descriptors(s)
[INFO]
[INFO] --- maven-resources-plugin:2.4:testResources (default-testResources) @ nexus-api ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/juven/workspaces/ws-nexus/nexus/nexus-api/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.0.2:testCompile (default-testCompile) @ nexus-api ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- plexus-component-metadata:1.2.1:generate-test-metadata (process-test-classes) @ nexus-api ---
比较下Maven2的输出:
[INFO] task-segment: [clean, install]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean]
[INFO] Deleting directory D:\demo\spice-timeline\target
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Compiling 14 source files to D:\demo\spice-timeline\target\classes
[INFO] [plexus-component-metadata:generate-metadata {execution: process-classes}]
[INFO] Discovered 3 component descriptors(s)
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] Compiling 4 source files to D:\demo\spice-timeline\target\test-classes
[INFO] [plexus-component-metadata:generate-test-metadata {execution: process-test-classes}]
[INFO] [surefire:test]
[INFO] Surefire report directory: D:\demo\spice-timeline\target\surefire-reports
Maven3的输出中,正在运行的插件,以及build所处的项目信息更加清晰。使用缩进来标示插件,更容易找到各个插件的运行情况,而增加@ nexus-api这样的信息,就能在一个多模块构建中更方便的看到当前所build的项目。
目前,几乎没有什么关于Maven3的文档,不过有两篇博客和一个wiki提供了很多有用的信息:
Maven 3.0 technology preview: Interview with Benjamin Bentmann
Maven 3.x: Paving the desire lines — Part One
基于以上的信息以及我自己简单的使用经验,这里有一个简单的总结,归纳Maven3主要的目的和特性:
-
重构和清理代码库
Maven3减少了代码中模块的数量,并基于大量的集成测试,对Maven核心进行重大的重构。一方面方便修复一些之前由于Maven2架构问题无法修复的bug,另一方面,更简单优雅的代码也容易吸引开源爱好者的加入及贡献。 -
完全兼容Maven2
Maven3不会破坏现存的Maven2构建,为此Maven团队已经开发了500多个集成测试以覆盖各种情况,到GA版本的时候,这个数字会达到600。 -
改进多模块构建
Maven2的多模块构建中,模块A必须install之后才能被模块B使用,Maven3消除了这一限制,比如说模块A编译之后,模块B就能直接使用其输出class。 -
改进插件版本解析机制
Maven2的一大问题是用户可以不指定插件版本就能直接使用插件,而Maven会自动解析最新的插件版本(可能是SNAPSHOT),这造成了build的不可预知性,有时会因为某个插件版本的变化而导致build失败。自maven 2.0.9开始所有核心插件明确指定了版本,但这还不够,在Maven3中,如果发现有未指定版本的插件,Maven会发出警告,此外,如果你忽略警告,Maven也只会解析最新的RELEASE版本,而不会再使用SNAPSHOT。这样,既保持了对Maven2的兼容,也在最大程度上避免因插件版本不稳定引起的build失败。 -
从核心分离site和reporting模块
Maven2的核心生命周期包含了site,而site又与Doxia绑定,maven3将site以及reporting分离,通过插件,当前的maven2 site仍然可以使用,而且,使用非Doxia格式的site也成为了可能。
-
更好的支持嵌入环境如CI和IDE
Maven2缺乏对嵌入环境的考虑,maven3基于一些集成的经验如m2eclipse, hudson,对这一点进行了改进,因此,将来在IDE和CI服务器,或者Nexus中,集成Maven会更加方便。
最后,我将持续对Maven3进行关注,并在博客中更新相关信息。
评论
发表评论
-
我的书《Maven实战》
2010-11-12 13:09 70138我本来已经决定停止更新该博客了,但是为了推广下我的新书《Mav ... -
m2eclipse 0.10.0发布
2010-02-22 17:34 8051本文译自 http://www.sonatyp ... -
按需构建多模块,玩转Maven反应堆
2010-01-07 19:57 29588在多模块Maven项目中,反应堆(Reactor)是一个包含了 ... -
Maven仓库的布局
2009-12-14 08:54 11962注:本文节选自我正在 ... -
Nexus 1.4.0 发布
2009-10-29 17:22 6231新完成的用户故事: [ NEXUS-463] - ... -
archtype:generate出错?
2009-10-12 00:10 8202我们常常会使用mvn archet ... -
你最常用的构建和发布管理工具是什么?
2009-09-13 15:03 13021最近Eclipse社区进行了一项调查,关注社区如何使用Ecli ... -
策划编写《Maven实战》——初步目录
2009-09-09 03:42 82482010-08-27更新 关注 ... -
Maven最佳实践:持续集成
2009-08-21 17:14 0test -
Maven最佳实践:集成web容器
2009-08-21 17:13 0test -
《Maven权威指南》完整发布,带官方PDF
2009-07-06 00:45 675682010/04/29更新 :我已 ... -
Nexus Indexer 2.0:增量下载
2009-05-14 16:33 10315原文:http://www.sonatype.com/peop ... -
Maven最佳实践:版本管理
2009-04-29 00:04 125017什么是版本管理 首先,这里说的版本管理(version ma ... -
Maven最佳实践:Maven仓库
2009-04-01 17:42 111035什么是Maven仓库 在不用M ... -
Maven中央仓库的中国镜像
2009-03-31 22:53 45943(2011-01-27更新,由于私人原因,该镜像已关闭,在此致 ... -
Nexus入门指南(图文)
2009-03-15 23:07 147689Nexus介绍 Nexus 是Maven仓 ... -
“第十七章 编写插件” 发布
2009-03-09 17:16 3920又是漫长的一章内容,但如同本书的任何一章一样,由于原作者都是M ... -
Maven最佳实践:管理依赖
2009-02-23 16:50 28361"If I have seen further it ... -
m2e:为Eclipse引入Maven(下)
2009-02-04 16:19 30364译自:http://www.sonatype.co ... -
m2e:为Eclipse引入Maven(上)
2009-02-04 14:10 12737译自:http://www.sonatype.co ...
相关推荐
**eclipse-maven3-plugin** 是一个专门为 Eclipse IDE 设计的插件,它允许开发者在 Eclipse 开发环境中无缝集成 Maven 构建工具。Maven 是一个项目管理和综合工具,广泛用于 Java 应用程序的构建、依赖管理和项目...
"最好用的maven3"这一标题表明了Maven 3版本因其高效和易用性而备受推崇。本文将深入探讨Maven 3的核心特性、安装配置、以及如何利用它进行项目的构建与管理。 ### 1. Maven 3 的核心特性 - **项目对象模型 ...
ECLIPSE MAVEN3插件文件(eclipse-maven3-plugin工具)
** Maven 3.x 全版本概述 ** Maven 是一个基于 Java 的项目管理和综合工具,由 Apache 软件基金会开发。它通过提供一个标准化的构建过程,简化了项目的构建、依赖管理和文档生成。Maven 使用一个项目对象模型...
Maven3_01_maven概览 Maven3_02_maven安装的注意事项 Maven3_03_在eclipse中建立简单的项目 Maven3_04_maven的依赖特性 Maven3_05_maven的聚合和继承 Maven3_06_复习maven的基本内容 Maven3_07_nexus的介绍和安装 ...
eclipse-maven3-plugin.7z 解压缩到 plugins 目录下 3. 在 links 目录下创建一个maven.link(名字可以随便取,但必须是.link结尾的文件)文件 打开并输入:path= D:/Development/eclipse-JavaEE/eclipse/plugins...
### Maven3配置说明 #### 一、Maven3概述与重要性 Maven是由Apache基金会维护的一款自动化构建工具,主要用于Java项目的构建、依赖管理和项目信息管理。随着Maven的广泛应用,它已经成为许多开源项目和企业级项目...
** Maven3 安装教程详解 ** Maven 是一个强大的项目管理和构建工具,广泛应用于Java开发领域。它通过使用一种标准化的项目对象模型(Project Object Model, POM),自动管理项目的构建、报告和依赖关系。在本文档中...
标题中提及的“Maven3实战笔记”指向了Maven这款流行的Java项目管理和自动化构建工具的第三个主要版本。Maven自从引入以来,就极大地简化了Java项目的构建过程,提高了项目构建的标准化程度。它使用项目对象模型...
《Maven3实战》这本书是Java开发者不可或缺的参考资料,它深入浅出地介绍了Maven这一强大的项目管理和构建工具。在Java开发中,Maven3以其规范化的项目结构、自动化构建和依赖管理等功能,极大地提高了开发效率和...
直接离线安装eclipse中的maven插件,在你的eclipse安装根目录下创建两个文件夹:links,myplugins(文件夹名字可以自定义),所在路径D:\eclipse。将下载下来的maven插件放到myplugins下。载links目录下创建一个...
【标题】"eclipse-maven3-plugin.rar"指的是Eclipse集成开发环境与Maven 3.0.4版本的插件结合,这个压缩文件包含了使Eclipse支持Maven 3.x版本所需的所有组件。 【描述】"maven3.0.4在eclipse中的插件"说明了该插件...
apache maven 3.x.x所有Linux, Windows版本下载的百度网盘链接。 apache-maven-3.0.4-bin.tar.gz apache-maven-3.0.4-bin.zip apache-maven-3.0.5-bin.tar.gz apache-maven-3.0.5-bin.zip apache-maven-3.1.0-bin....
Eclipse Maven3 Plugin,也称为 M2E(Maven Integration for Eclipse),是将 Maven 功能集成到 Eclipse IDE 中的插件,使得开发者在 Eclipse 环境下可以直接使用 Maven 的功能。 1. **集成开发环境中的Maven支持**...
支持maven2 maven3 通用版本eclipse插件,在maven官网下载apache-maven-3.2.1-bin.zip,解压插件压缩包到path=D:\m2e-0.12.0.20101115-1102 在eclipse新建links文件夹,新建文件maven23.link,内容为:path=D:/m2e-...
Eclipse Maven3 离线插件是一款专为Eclipse集成开发环境设计的Maven构建工具,它使得开发者能够在不连接互联网的情况下安装和使用Maven功能。Maven是一个项目管理和综合工具,它通过一个中央仓库下载依赖并管理Java...