- 浏览: 284234 次
- 性别:
- 来自: 福建
文章分类
- 全部博客 (183)
- 软件架构 (6)
- JEE (21)
- Struts (2)
- Spring (8)
- 权限控制 (10)
- iBATIS (3)
- Hibernate (15)
- Freemarker (1)
- SpringSide (2)
- JBoss (1)
- Seam (2)
- jBPM (2)
- 开源 (2)
- 开发工具 (5)
- 打包构建 (14)
- JSF (1)
- 日志 (3)
- 搜索 (3)
- 定时器 (1)
- 单元测试 (3)
- IoC (3)
- JGroups (3)
- JavaFX (1)
- Web (9)
- Javascript (14)
- Ajax (0)
- qooxdoo (0)
- Dojo (2)
- ExtJS (2)
- JQuery (5)
- ZK (1)
- 数据库 (6)
- 正则表达式 (1)
- ruby (3)
- php (1)
- 数据结构与算法 (1)
- ubuntu (3)
- OSGi (1)
- 高性能网站架构 (12)
最新评论
-
FX夜归人:
...
Lucene为数据库建索引 -
yu46612143:
...
m2eclipse 安装及使用 -
lenomon:
可以看看这个demo, M2eclipse 设置 Mave ...
m2eclipse 安装及使用 -
Smile__xtj:
aa
Java对象验证框架 OVal -
tuoxiaohu:
这个插件不支持3.X了,只有4.X的,请问你有3.1.X的pl ...
在Eclipse WTP中加入Resin server adapter
本文转载于:http://www.blogjava.net/pesome/archive/2006/09/21/71045.html
如有侵权,请及时告知,谢谢
在 Java世界中我们很多的开发人员选择用 Ant来构建项目,一个 build.xml能够完成编译、测试、打包、部署等很多任务,但我们也碰到了很多的问题,如 jar文件管理混乱,各个项目结构和 build.xml相差很大等等。而 Maven的出现,给项目提供了更多的支持。
1 简介
Maven 作为 Apache 的一个开源项目,旨在给项目管理提供更多的支持,主页地址为 http://maven.apache.org 。它最早的意图只是为了给 apache 组织的几个项目提供统一的开发、测试、打包和部署,能让开发者在多个项目中方便的切换。很多伟大的事业,出发点都很简单, ebay 就是很好的例证。而 maven 的成功又一次验证了这一点,越来越多的项目开始使用 maven 。
基本原理
Maven 的基本原理很简单,采用远程仓库和本地仓库以及一个类似 build.xml 的 pom.xml ,将 pom.xml 中定义的 jar 文件从远程仓库下载到本地仓库,各个应用使用同一个本地仓库的 jar ,同一个版本的 jar 只需下载一次,而且避免每个应用都去拷贝 jar 。如图 1 。同时它采用了现在流行的插件体系架构,只保留最小的核心,其余功能都通过插件的形式提供,所以 maven 下载很小( 1.1M ),在执行 maven 任务时,才会自动下载需要的插件。
这个基本原理与 Pear ――PHP扩展与应用库( the PHP Extension and Application Repository )的原理非常相似,都有一个官方的仓库,都是微内核,通过网络将需要的文件下载到本地,通过官方仓库将相应的类库进行统一管理。 Pear 已经成为 PHP 开发事实上的标准,而 Maven 在 Java 世界的地位也逐渐加强,成为标准指日可待。
另外由于插件的易开发性,现在有了非常多的可供选择的插件,如与 eclipse 结合的插件,与 test 相关的插件,后面我们结合 maven 在项目中的使用进行详细介绍。
图 1
2 项目管理
Maven 官方把 maven 定义为一个项目管理工具,我们不妨看看 maven 能给我们的项目提供哪些好的支持。
2.1 项目标准化
Maven 一个重要特性是定义了项目的标准模板,官方说法是最佳实践。可以通过命令: mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app 创建一个单一的 maven 项目。创建好的项目,具有了特定的项目结构。这个项目结构是参考业界的最佳实践而成,为后面使用统一的 maven 命令打下了基础,如测试 mvn test 、打包 mvn package 等,无需写一行脚本,就可以方便的实现众多功能。 Maven 还提供其它一些类型模板,可以通过添加 -DarchetypeArtifactId= { type }创建,如 -DarchetypeArtifactId=maven-archetype-site ,生成 site 类型的项目。
同时一些好的开源软件使用了 maven ,也能作为很好的项目模板,如 Equinox ( Appfuse 的简化版),它的 pom 定义了对 hiberante,spring… 的依赖,可以通过 ant new -Dapp.name=NAME 快速生成项目原型,然后对 pom 文件进行裁减,以符合自身项目的需要。
有了这个标准,项目间能方便的进行交流,你也很容易了解其它使用 maven 项目的结构。对于企业来说,引入 maven 就自然引入了规范,这可比费时费力的写文档,定规范有效的多了。
2.2 文档和报告
使用 mvn site 可以快速生成项目站点, apache 很多开源项目站点都采用 maven 生成,会出现 built by maven 字样的图标。
而 maven 提供的针对如 junit , checkstyle , pmd 等的插件,能够方便的进行测试和检查并能直接生成报告。使用都很简单,如 mvn surefire-report:report 就能自动进行 junit 测试,并生成 junit 报告, mvn pmd:pmd 生成 pmd 报告。具体使用可以在 http://maven.apache.org/plugins/index.html 找到。
2.3 类库管理
Maven 一个很重要的特色就是类库管理。通过在 pom.xml 中定义 jar 包版本和依赖,能够方便的管理 jar 文件。以下是一个简单的 jar 定义片断:
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate</artifactId> <version>3.1</version> <type>jar</type> <scope>runtime</scope> </dependency> |
这个片断告诉我们,依赖的 jar 包 groupId 为 org.hibernate , artifactId 为 hibernate ,版本为 3.1 , scope 为 runtime 。在实际项目中,会将 M2_REPO(maven 本地仓库地址 )/ org/hibernate / hibernate /3.1/ hibernate -3.1.jar 放入 classpath 。
同时 maven 会通过 pom.xml 管理 jar 包间的依赖。比如上面的 hibernate-3.1.jar 同级目录肯定会有一个 hibernate -3.1.pom ,在这个 pom 文件中指定了这个 jar 对其它一些 jar 的依赖。而这个 pom 文件是远程仓库提供,无需进行修改,执行 maven 相关命令就会自动根据相关依赖去下载 jar 包。这样只需定义对 hibernate 的依赖而无需关心相关 jar ,在构建项目上方便了很多。
因为 pom 文件对 jar 的管理,也产生了一个很吸引人的特性:项目文件很小。以往一个 web 项目中, jar 文件都要放入 WEB-INF/lib 下,并放入 cvs(svn) 中,很容易就达到几十 M 。而通过 maven ,只需一个 pom.xml ,在执行 mvn eclipse:eclipse 时再去远程仓库下载,项目文件一般只需几百 K 。
2.4 发布管理
使用 maven 可以方便的进行项目发表管理。在项目开发到一定阶段,可以使用 mvn package 打包,它会自动先运行 mvn test ,跑所有的 testcase ,只有全部通过才能正确打包。生成的 war 包(如果项目的 packaging 为 war )在 target 目录下。这个 war 包与使用 ant 脚本生成一样,但无需一行脚本,这也是 maven 对比 ant 的优势之一。使用 mvn install 将编译和打包好的文件发布到 distributionManager 指定的远程 repository 。使用 mvn deploy 可以自动管理项目版本。
3 使用 maven
Maven 使用简单,插件丰富且经过大量项目考验,在项目中引入的风险很小。笔者在项目中使用 maven ,新进员工在半小时内就能成功使用 maven 构建项目,并很快掌握几个常用的命令。 Maven 也不需要什么特殊的设施。如果项目全部使用开源软件,并且不需要 maven 管理项目版本,只需要一个 SCM 环境( CVS 或 SVN ),共享开发源码就可以。把 pom.xml 中的 repository 设为官方地址就行,配置如下:
<repository> <id>central</id> <url>http://www.ibiblio.org/maven2</url> </repository> |
这个官方 remote repository 上有非常多的开源软件,应该能满足大部分项目的需要。如果有项目需要而它上面暂时还没有的软件,或者希望使用公司内部的软件,那么就需要自己配置一个 repository 了。
3.1 自建私服
传奇私服大家应该都听过,一个网吧自己搞个私服,一伙人免费在上面砍杀。官方因此少赚了很多钱,因此总想打击。而 maven 官方却对自建私服很是支持,我们总算可以正正当当搞把私服了( Springside 的老大江南白衣就是创建私服的好手)。我们就来介绍下自建私服的最快方法。
首先需要一个 http server ,找台服务器装上 apache 就行。放一个空的 maven 目录到 htdocs 下,假设服务器 ip 为 192.168.0.1 ,确认能用 http://192.168.0.1/maven 访问到。然后在自己机器上装好 maven2 ,初始化好项目,在 pom.xml 放入需要的 jar 定义,运行如 mvn eclipse:eclipse 就自动从官方下载 jar 到本地,如果不做配置,默认本地 repository 为 ${user.home}/.m2/ 。对于 windows xp 来说一般在 C:\Documents and Settings\ % username%\.m2 下,其中% username %为操作系统登录用户名。这时你可以看到 ${user.home}/.m2/ 下多了个 repository 目录,里面有很多的项目相关 jar ,目录按 groupId/ artifactId/version 排好。把 repository 目录整个拷贝到 apache 服务器的 maven 目录下,如果需要官方缺少的 jar 或公司内部 jar ,仿照这个目录结构,做好 jar 放到 maven 目录下。自建私服成功!
要使用私服,只需修改 pom.xml ,在 repository 配置后加上:
<repository> <id>companyName</id> <url>http:// ${ip}/maven</url> </repository> |
这样需要下载 jar 时,会先到本地 repository 查看,没有下载过再到官方搜索,没有找到再到后面的 repository 查找。
3.2 安装配置
Maven 的安装很简单:
1. 从 apache 网站上下载 maven 安装包,实际上就是个压缩文件。将其解压到你想要存放 maven 的目录中。在这里假设你将 maven 解压到 C:\Program Files\Apache Software Foundation\maven-2.0.4 中。
2. 将 C:\Program Files\Apache Software Foundation\maven-2.0.4\bin 设到你的系统环境变量%PATH%中。
3. 同时确保你已经将你的JDK安装目录设为java_home系统变量。
4. 打开个命令行窗口,运行 mvn –version 验证是否安装成功。
5. 如果使用 eclipse ,在运行 mvn eclipse:eclipse 生成 eclipse 项目文件后,需加入 M2_REPO 到 Classpath Variables 中,指向 本地 repository ,例如: C:/Documents and Settings/Owner/.m2/repository 。
3.3 基本使用流程
在项目进程中,不必做什么配置,在 pom.xml 同级目录, cmd 使用简单的 maven 命令,就可以完成初始化 -> 开发 -> 测试 -> 发布 的全过程。 Maven 的基本使用流程如下图:
其中在初次使用命令 mvn eclipse:eclipse 时会下载很多的插件和 jar ,可能需要较长的时间,建议泡杯咖啡,和同事吹吹牛。如果失败,可能是网络问题,可以重新运行 mvn eclipse:eclipse ,已下载好的插件和 jar 不会再下。运行 mvn test 和 mvn package 等命令,产出物都会放在 target 目录下。如果在使用过程中有什么问题,也可以和我联系, mail:pesome@gmail.com ,我们一起来尝试解决。
总结:
Maven 作为新的项目管理工具,简单易用,能对项目的各个阶段提供大力支持,同时由于它易扩展的插件体系架构,出现了越来越多的插件,也使得其功能更加强大。短短一篇文章,实在很难把其特点一一尽述, maven 还有很多好用的功能和插件等待我们去使用和开发。而学习新技术的最好方式就是实践,大家如果有兴趣,尽快下载一个最新版,开始你的 maven 之旅吧!
作者简介:张俊,网名 pesome ,上海交大软件工程硕士, 2 年 JavaEE 开发经验,资历尚浅。去年下半年开始接触 spring ; mso-hansi-font-fa
发表评论
-
利用 Ant 和 Eclipse 有效地提高部署工作效率
2009-07-16 11:26 1045转载自:http://www.ibm.com/develope ... -
Ant起步
2009-07-15 14:11 916转载自:http://hi.baidu.com ... -
Ant应用
2009-07-15 14:09 812转载自:http://www.host01.c ... -
Ant部署Tomcat
2009-06-22 15:16 1392使用Ant自动部署Tomcat应用 http://iffif ... -
开始使用maven1
2009-03-31 11:15 841http://www.matrix.org.cn/resour ... -
Maven2安装总结
2009-03-31 10:07 1160首先当然去Apache网站下载Maven2了。下载地址:htt ... -
Maven1安装全程指南
2009-03-30 10:43 15121.下载maven1.02安装文件 ... -
maven1.0与maven2.0区别
2009-03-29 11:57 1685Maven 出现到现在也有很 ... -
m2eclipse 安装及使用
2009-03-29 11:15 3181m2eclipse安装 m2eclipse使 ... -
Maven权威指南
2009-03-29 10:35 1146本书目录 ---------------- 前言 序 1. 介 ... -
Maven起步-教你开始使用Maven
2009-03-29 10:16 1271摘要:Maven1.0已经历了 ... -
subclipse安装使用
2009-03-28 13:04 1152Install Subclipse in Eclipse 3. ... -
maven2完全使用手册
2009-03-28 12:00 809本文转载于:http://agappl ...
相关推荐
一个Maven项目可以包含多个子项目,通过设置parent POM,可以实现子项目共享公共配置,便于大型项目的管理。 Maven的缺点也值得提及,例如,其配置文件POM.xml可能会变得复杂,特别是当项目依赖关系繁多时。另外,...
本教程将指导您使用 IDEA 创建一个 Maven Web 项目,从安装 Maven 到配置 Maven 环境、创建 Maven 工程、pom.xml 文件配置、依赖管理等。 1. 安装 Maven 在 IDEA 中使用 Maven 之前,需要先安装 Maven。在 Maven ...
** Maven项目管理软件详解 ** Maven是一款强大的Java项目管理工具,由Apache Software Foundation开发并维护,它在软件开发领域中扮演着至关重要的角色。Maven通过自动化构建过程,简化了项目的构建、依赖管理和...
Apache Maven是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。 本教程将介绍如何使用Maven在Java开发,或任何其他的编程语言的任何项目。
maven是一种基于项目对象模型(Project Object Model,POM)的项目管理工具,由Apache软件基金会开发和维护。maven提供了一种标准化的方式来构建、打包和部署项目,它可以帮助开发者简化项目的构建、测试和部署过程...
然而,对于习惯于使用Eclipse IDE开发Web项目的开发者来说,Maven项目可能会显得较为复杂。本文将详细介绍如何将一个Maven项目转换为Eclipse中的Web项目,并解释Maven的基本目录架构。 首先,让我们了解Maven项目的...
项目管理工具Maven,包括一些maven的基础知识,内容还算详细.
基于SSM框架+mysql,Maven项目管理实现的在线记账系统项目源码 基于SSM框架+mysql,Maven项目管理实现的在线记账系统项目源码 基于SSM框架+mysql,Maven项目管理实现的在线记账系统项目源码 基于SSM框架+mysql,...
Maven 是一个由 Apache 软件基金会开发并维护的项目管理工具,专门针对 Java 平台的项目构建和依赖管理。它的名字来源于英文单词 'maven',意味着专家或内行。Maven 的设计目标是简化项目构建过程,通过项目对象模型...
【标题】:“Maven管理的Web项目” 在Java Web开发中,Maven是一个强大的构建工具,它通过自动化构建过程,简化了项目的管理。Maven基于项目对象模型(Project Object Model,POM),能够处理编译、测试、文档生成...
**正文** Maven是Java开发领域中广泛使用的项目管理和综合工具,它可以帮助开发者...这个"Maven项目管理工具包"中的Maven.3.3.9.包,正是这样一个最新版本的Maven安装包,供开发者下载使用,以便在项目开发中受益。
4. **使用Maven进行项目管理** - 创建Maven项目:使用`mvn archetype:create`命令快速生成基本项目结构。 - 编译项目:运行`mvn compile`命令,Maven会根据POM配置编译源代码。 - 打包项目:`mvn package`命令会...
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,...
Maven 2 是一个广泛使用的Java项目管理工具,它极大地简化了构建、管理和部署Java应用程序的过程。Maven 使用一种标准化的方法来组织项目结构,并通过依赖管理和项目信息管理来自动化构建流程。这个工具的核心概念是...
Maven是一个强大的项目管理工具,它自动化构建过程,包括编译、测试、打包、部署等,使得开发更加高效。 在创建一个Maven Web项目时,我们通常会遵循以下步骤: 1. **初始化项目结构**:Maven的默认项目结构包括`...
maven是一个用于java项目管理和自动构建的软件工具。协同开发的基本规范,为大家提供方便的协作的模式,能增加代码的复用,提高生产率。 提供方便,规范化的打包方法,是公司完成自动构建系统的核心部分,能帮助提高...
总之,Maven 是一个强大的项目管理工具,它使得构建、测试和部署 Java 项目变得更加简单。通过理解并熟练运用 Maven 的基本概念和命令,开发者可以更高效地管理工作流程。在 MyEclipse 中,Maven 的集成使得这些操作...