1、Maven2 在企业项目中的使用Maven2 简介Maven是什么?是什么?是什么?是什么? maven是从ant上发展起来的,Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具。Maven的主要功能的主要功能的主要功能的主要功能 构建项目(Builds) 文档编制(Documentation)报告(Reporting) 依赖管理(Dependencies) 配置管理(SCMs) 发布管理(Releases)Maven2简介pom文件介绍文件介绍文件介绍文件介绍 pom.xml包含了一个项目的项目对象模型(POM)。项目对象模型(POM)是Maven工作的基本单
2、元。请记住,这个是非常重要的,因为POM包含了工程的非常重要的信息块,并且基本上包含了和项目相关的任何要素。Pom.xml包含的基本项包含的基本项包含的基本项包含的基本项 poject 这是pom.xml的顶级元素。modelVersion 这是元素指出了这个POM使用的是那个版本的对象模型。这个模型的版本自身不是经常改变的,但这种改变是为了使模型更加的稳定。groupId 这个元素指出创建这个工程的组织或团队的唯一标识,并且这个也是一个项目的关键标识,推荐使用这个组织或团队的完整域名。例如:org.apache.maven.plugins是为Maven plug-ins定义的groupId。
3、artifactId 这个元素指出这个工程的主要制品的基本名称。一个工程的主要制品如果是jar文件,次要制品如果是源码包,则次要制品的名称的一部分也使用artifactId。典型的制品名称使用这样的格式:-.(例如,myap-1.0.jar)。Maven2简介pom.xml包含的基本项包含的基本项包含的基本项包含的基本项packaging 这个元素指出制品的类型(例如:JAR,WAR,EAR等等)。这个元素不仅仅指示出制品的类型,同时也指示出工程构建过程中的部分生命周期。Packaging的默认值是JAR。version 这个元素指出这个项目产生的制品的版本号,Maven在帮助开发人员管理版本
4、号时走了很长的路,以后你将经常看到SNAPSHOT在一个版本中,这个表示一个工程仍然在开发状态。name 这个元素指出这个工程显示的名称。这个常用于Maven产生的文档中。url 这个元素指出在哪里能发现工程的站点。这个常用于Maven产生的文档中。desription 这个元素提供了这个工程基本的描述。这个也常用于Maven产生的文档中。Maven2简介注:详细资料请参考Maven2使用指南使用指南使用指南使用指南Maven2 安装到htp:/maven.apache.org/download.html 下载最新maven安装包这里下载Maven 2.0.10 (zip) apache-ma
5、ven-2.0.10-bin.zip解压该文件到任意目录添加M2_HOME到系统环境变量,指定maven根目录添加M2到系统环境变量,指定%M2_HOME%bin目录Maven2 安装在path环境变量中配置%M2_HOME%bin打开命令行窗口,输入mvn version,如果出现maven版本信息,说明安装成功安装maven eclipse plugin打开eclipseHelp software updates Ad Site安装maven eclipse plugin输入htp:/m2eclipse.sonatype.org/update/ 进行在线更新完成后重启eclipseFile
6、 New Project 如果出现Maven菜单说明插件安装成功服务端 Nexus介绍介绍介绍介绍Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节 省带宽和时间,Nexus就可以满足这样的需要。此外,他还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的 REST客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。 下载和安装下载
7、和安装下载和安装下载和安装你可以从htp:/nexus.sonatype.org/downloads/ 下载最新版本的Nexus,笔者使用的是1.3.0版本。Nexus提供了两种安装方式,一种是内嵌Jety的bundle,只要你有JRE就能直接运行。第二种方式是WAR,你只须简单的将其发布到web容器中即可使用。下载和安装下载和安装下载和安装下载和安装Bundle方式安装方式安装方式安装方式安装解压nexus-webap-1.3.0-bundle.zip 至任意目录,如D:java ,然后打开CMD,cd至目录D:javanexus-webap-1.3.4-bundlebinjsw indow
8、s-x86-32 ,运行InstalNexus.bat 。会在系统服务中出现nexus服务。下载和安装下载和安装下载和安装下载和安装启动服务,在浏览器输入htp:/127.0.0.1:8081/nexus,出现如下页面说明安装成功下载和安装下载和安装下载和安装下载和安装WAR安装方式下载对应war程序,将其放入webaplication下,访问方式与Bundle方式相同代理外部代理外部代理外部代理外部Maven仓库仓库仓库仓库登陆登陆登陆登陆 要管理Nexus,你首先需要以管理员身份登陆,点击界面右上角的login,输入默认的登录名和密码:admin/admin123,登陆成功后,你会看到左边
9、的导航栏增加了很多内容:代理外部代理外部代理外部代理外部Maven仓库仓库仓库仓库代理外部代理外部代理外部代理外部Maven仓库仓库仓库仓库这里,可以管理仓库,配置Nexus系统,管理任务,管理用户,角色,权限,查看系统的RS源,管理及查看系统日志,等等。你会看到Nexus的功能十分丰富和强大,本文,笔者只介绍一些最基本的管理和操作。 代理代理代理代理Maven中央仓库中央仓库中央仓库中央仓库点击左边导航栏的Repositories,分别选择Apache Snapshots、Codehaus Snapshots、Maven Central三个库,在下面会出现对应选项,选择configurati
10、on卡片,将其中的Download Remote Indexes 选项设置问Ture,保存再分别在上面三个库上点击右键,选择Re-Index进行索引管理管理管理管理Maven仓库组仓库组仓库组仓库组点击仓库列表中的“Public Repositories”,然后选择下方的“Configuration“ Tab,在配置面板中,将右边“Avaiable Repositories”中的“Sonatype Repository”拖拽到左边的“Ordered Group Repository”中,如图: 管理管理管理管理Maven仓库组仓库组仓库组仓库组搜索构件搜索构件搜索构件搜索构件在浩大的Maven
11、仓库中一下下点击链接,浏览路径以寻找感兴趣的构件是一件很郁闷的事情。Nexus基于nexus-indexer提供构件搜索功能, 要想对仓库进行搜索,无论是hosted,proxy,或者group,你都必须确认索引文件存在。这一点对于代理仓库尤其重要,有些远程仓库可能根本就 没有索引,所以你无法搜索这些代理仓库。有些远程仓库的远程索引非常大,如中央仓库达到了70M左右,那么第一次下载索引需要花很多时间,所以要期望得到 搜索结果,确保看到如下的文件: 搜索构件搜索构件搜索构件搜索构件搜索构件搜索构件搜索构件搜索构件一旦你的Nexus拥有了本地或者远程仓库的索引文件,你就可以享受Nexus的构件搜索
12、功能了。不论登陆与否,你都可以使用关键字进行模糊搜索,比如我 在左边导航栏上部的搜索框内输入junit,然后点击搜索按钮,右边立刻会分页显示50多条的junit相关构件信息。如果你了解更多的信息,你也可以 通过限定groupId,artifactId,version进行搜索,点击导航栏中的“Advanced Search”,点击右边所有页面左上角的下拉框,选择“GAV Search”。这里输入junit,然后回车: 搜索构件搜索构件搜索构件搜索构件搜索构件搜索构件搜索构件搜索构件选择一项搜索结果,在页面下方会显示“Artifact Information”的面板,你可以点击“artifact“
13、或者“pom“下载对应文件,而该面板右边更显示了一个Maven依赖配置,你可以直接复制该配置到Maven POM中,这是个十分方便的特性。此外,值得一提的是,Nexus还支持基于classname的搜索,你只需点击搜索页面右上角的下拉框,选择“Classname Search”,然后输入类名即可,这里我不再赘述。配置配置配置配置Maven使用使用使用使用Nexus默认情况下,Maven依赖于中央仓库,这是为了能让Maven开箱即用,但仅仅这么做明显是错误的,这会造成大量的时间及带宽的浪费。既然文章的前面已经介绍了如何安装和配置Nexus,现在我们就要配置Maven来使用本地的Nexus,以节省
14、时间和带宽资源。我们可以将Repository配置到POM中,但一般来说这不是很好的做法,原因很简单,你需要为所有的Maven项目重复该配置。因此,这里我将Repository的配置放到$user_home/.m2/setings.xml中:配置配置配置配置Maven使用使用使用使用Nexus dev local-nexus htp:/192.168.0.6:8081/nexus/content/groups/public/ true true dev 使用该配置,Maven就会从你的Nexus服务器下载构件了,速度和从Central下载可不是一个数量级的。 通过通过通过通过Maven部署部署
15、部署部署在eclipse中开发时,在pom文件中加入如下代码,就可以使用mvn deploy命令将项目发布 nexus-releases Nexus Release Repository htp:/127.0.0.1:8080/nexus/content/repositories/releases/ nexus-snapshots Nexus Snapshot Repository htp:/127.0.0.1:8080/nexus/content/repositories/snapshots/ 通过通过通过通过Maven部署部署部署部署同时需要对允许向服务端部署的用户对应seting.xml
16、文件中加入如下代码 nexus-rel ases admin admin123 nexus-snapshots admin admin123 总结总结总结总结本文介绍强大的仓库管理器Nexus,包括如何下载安装Nexus,配置Nexus代理中央仓库,管理Nexus的代理仓库,本地仓库,以及仓 库组。并帮助你了解如何通过Nexus搜索构件。最后,如何在Maven中配置exus仓库,以及如何部署构件到Nexus仓库中。这些都是Nexus 中最基本也是最常用的功能。随着使用的深入,你会发现Nexus还有很多其它的特性,如用户管理,角色权限管理等等。Nexus的OS版本是完全开源的,如果你有兴趣,你可以学习其源码,甚至自己实现一个REST客户端。马上拥抱Nexus吧,它是免费的!