- 浏览: 2868923 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (1173)
- 名言警句 (5)
- 心情随笔 (50)
- 数据库 (57)
- Java基础 (241)
- J2EE框架 (91)
- 数据结构 (12)
- 程序设计 (21)
- WEB技术 (128)
- 网络日志 (12)
- IT资讯 (247)
- linux (64)
- solaris (2)
- 其它 (143)
- WebService (4)
- 日语学习 (2)
- 机器人 (5)
- Android (5)
- cgywin (3)
- Game (1)
- DWR (1)
- spring (8)
- canvas (1)
- Guava (3)
- Modbus (5)
- 测试 (6)
- mongodb (9)
- Quartz (2)
- Cron (1)
- windows (2)
- 持续集成 (1)
- bootstrap (3)
- 结对编程 (1)
- nodejs (1)
- Netty (1)
- 安全 (3)
- webstorm (2)
- sparkline (1)
- Job (1)
- git (3)
- Maven (3)
- knockout (5)
- jquery (1)
- bower (1)
- docker (1)
- confluence (4)
- wiki (1)
- GoogleMap (1)
- jekyll (10)
- ruby (2)
- npm (3)
- browserify (1)
- gulp (3)
- openwrt (1)
- discuz (3)
- 输入法 (1)
- JPA (1)
- eclipse (2)
- IntelliJ (1)
- css (1)
- 虚拟机 (1)
- 操作系统 (1)
- azkaban (2)
- scrum (1)
最新评论
-
pangxiea_:
你好, 想请问一下 Linux下 这么使用rxtxcomm 在 ...
使用Java进行串口通信 -
abababudei:
请教一下,这个您是怎么解决的:/dev/ttyS2enteri ...
Java应用程序的MODBUS通讯 -
xuniverse:
hannibal005 写道楼主,我问下 request.se ...
用javascript与java进行RSA加密与解密 -
atxkm:
找了一下午,终于找到了
gulp 拷贝文件时如何移除文件目录结构 -
kalogen:
gtczr 写道非常感谢,经过我自己的修改,已经完美实现。发出 ...
用javascript与java进行RSA加密与解密
在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之旅吧!
发表评论
-
spring mvc @controller unit test
2013-11-20 14:14 38861. spring mvc controller imple ... -
Tomcat 生产服务器性能优化
2013-07-23 06:45 1007试想以下这个情景:你已经开发好了一个程序,这个程序的排版很不 ... -
Loading Multiple Spring Application Contexts with their own ClassLoader
2013-07-11 20:45 1072package de.incompleteco.spring ... -
ActiveMQ JMS的测试
2011-04-06 18:15 3917有二种方式可以测试。 1. 透过testng, 在测试类中完 ... -
Maven系列2--pom.xml 配置详解
2011-01-06 18:00 3175<project xmlns="http ... -
fisheye2.3.6 安装笔记
2010-09-16 20:25 2234一. 准备工作 1. 下载fisheye ... -
服务器端编程的十大性能问题
2010-09-15 12:01 1233今年5 月底,瑞士计算 ... -
JMX in spring 配置
2010-09-07 12:00 3050JConsole中的连接:简单的localhost:1099 ... -
Ehcache 2.0:后写式缓存和JTA支持
2010-05-22 11:13 1854开源缓存框架Ehcache 最 ... -
Twitter系统运维经验
2010-04-12 22:24 1551最近看到的另外一个 ... -
采用OSGi框架开发项目的十个问题
2010-03-21 18:08 1462近期,InfoQ针对Java模块 ... -
IBM和Eclipse加大对OSGi的支持
2010-03-21 18:05 1271为Java提供模块性的OSGi,正在受到IBM和Eclipse ... -
Castor功能与应用参考
2010-03-12 12:48 36261. 项目简介Castor是一个开源的Java项目 ... -
hibernate之 DetachedCriteria实现多表查询
2009-07-25 17:13 13092DetachedCriteria detachedCriter ... -
spring AOP 理论知识点总结
2009-07-24 17:47 21741.1 AOP 的概念 ... -
web.xml 中的listener、 filter、servlet 加载顺序及其详解
2009-07-02 16:14 4122在项目中总会遇到一些 ... -
maven笔记
2009-06-22 22:14 1529mvn package : 项目打包 mvn help:ef ... -
利用maven构建多模块项目
2009-06-17 14:28 53601. 先单独构建各模块为一个独立的项目。 jar项目: m ... -
Maven基础
2009-06-17 12:58 1858下载Maven安装文件。 定义环境变量M2_HOME到pat ... -
安装M2eclipse步骤
2009-06-15 14:45 38211.下载下列所需文件 eclipse3.4.2 ...
相关推荐
一个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 的集成使得这些操作...