Maven学习第3期---m2eclipse使用

时间:2022-09-21 19:28:47

一、m2eclipse简介

和Nexus一样,m2eclipse也是Sonatype出品的一款开源工具,它基于Eclipse Public License-v.10开源许可证发布,用户可以免费下载并使用,还可以查看其源代码m2 eclipse的官方站点地址为http://m2eclipse.sonatype.org/

m2ecIipse为Eclipse环境提供了全面丰富的Maven集成 它的主要功能如下:

■ 创建和导人Maven项目

■ 管理依赖并与Eclipse的cIasspath集成

■ 自动下载依赖

■ 自动解析依赖的sources 与javadoc包

■ 使用Maven Archetype创建项目

■ 浏览与搜索远程Maven仓库

■ 从Maven POM具体化一个项目

■ 从SCM仓库签出Maven项目

■ 自动适配嵌套的多模块Maven项目至Eclispe

■ 集成Web Tools Projects (WTP)

■ 集成Subclipse

■ 集成Mylyn

■ 可视化POM编辑

■ 图形化依赖分析

二、m2eclispe的简单使用

2.1 新建Maven项目

在m2eclipse中新建一个Maven十分简单,在菜单栏中依次选择File→New→Other。这时可以看到下图所示的向导:

Maven学习第3期---m2eclipse使用

选择Maven Project之后,向导会提示用户选择是否跳过archetype而创建一个最简单的Maven项目,这个最简单项目将只包含最基本的Maven项目目录结构,读者可以根据自己的需要进行选择。

Maven学习第3期---m2eclipse使用

如果选择使用Archetype创建项目,单击Next按钮之后,向导会提示用户选择Archetype,如下图所示

Maven学习第3期---m2eclipse使用

如上图所示,有4个Archetype Catalog可供用户选择,包括maven-archetype-plugin内置的Intemal、本地仓库的Default Local、m2eclipse下载到仓库索引中包含的Nexus Indexer,以及所有这3个合并得到的All Catalogs。如果对Archetype Catalog不是很清楚。一般来说,只需要选择Internal。然后再选择一个Archetype,如maven-archetype-quiCk-start,最后单击Next按钮。

Maven学习第3期---m2eclipse使用

接下来要做的就是输入项目坐标Group Id、Artifact Id、Version以及包名。这一个步骤与在命令行中使用Archetype创建项目类似,如果Archetype有其他可配置的属性,用户也可以在这里一并配置,如下图所示。

Maven学习第3期---m2eclipse使用

单击Finish按钮之后,m2eclipse就会快速地在工作区创建一个Maven项目,这同时也是一个Eclipse项目。

2.2 导入Maven项目

较之于创建新的Maven项目,实际工作中更常见的是导人现有的Maven项目。m2eclipse支持多种导入的方武,其中最常用的是导人本地文件系统的Maven项目以及导入SCM仓库中的Maven项目。

单击菜单栏中的File,然后选择Import开始导人项目,如下图所示:

Maven学习第3期---m2eclipse使用

从上图中可以看到在Maven类中有4种导人方式,常用的就是第一种和第二种,即导入SCM仓库中的Maven项目和导入本地文件系统的Maven项目。图中的Install or deploy an artifact to a Maven repository能让用户将任意的文件安装到Maven的本地仓库。如果该文件没有对应的POM,则需要为其定义Maven坐标。 图中的Materialize Maven Projects能让用户导人第三方的Maven项目,用户只需要提供一些关键字如nexus-api,然后选择要导人的项目,m2eclipse就能基于索引找到其对应的POM信息。如果该POM中包含了SCM信息,m2eclipse就能直接下载该项目的源码并导人到m2eclipse中。当用到某个第三方类库,同时想研究其源码的时候,这一特性就非常有用,你不再需要打开浏览器去寻找该项目的信息,简单地在m2eclipse中操作几步就能完成第三方项目的导人。当然,这一特性的前提是第三方类库提供了正确的SCM信息。大多数开源项目在往Maven*仓库提交构件的时候都会提供完整的信息,但也有例外,为了避免信息不完整的项目进入Maven*仓库,最新的规则已经强制要求提交者提供完备的信息,如SCM、许可证以及源码包等。这无疑能帮助m2eclipse表现得更好。

2.2.1 导入本地Maven项目

现在详细介绍一下如何导人本地Maven项目:选择上图中的Existing Maven Projects选项,然后在弹出的对话框中选择本地项目所在的目录,如下图所示。m2eclipse能够自动识别出目录中所包含的Maven项目,如果发现是多模块项目,则会列出所有的模块。用户可以根据自己的需要选择要导人的模块,然后单击Finish按钮二m2eclipse会执行导人项目信息、更新下载项目依赖,以及重建工作区等操作,根据实际项目的情况,这个过程可能花费几十秒到十几分钟:

Maven学习第3期---m2eclipse使用

2.2.2从SCM仓库导入Maven项目

通常我们的项目源代码都存储在SCM仓库中,例如Subversion仓库,读者当然可以使用Subversion命令将项目源码签出到本地,然后再导入到m2eclipse中,但m2eclipse支持用户直接从SCM仓库中导人Maven项目。

要从SCM导人Maven項目,首先需要确保安装了集成SCM的Eclipse插件,如Subclipse,还需要m2eclipse的附属组件Maven SCM Integration以及对应的SCM handler,如集成Subclipse的Maven SCM handler for Subclipse。如果这些组件都得以正确安装,就可以选择下图中的Check out Maven Projects fromSCM:

Maven学习第3期---m2eclipse使用

在单击Next按钮之后,选择SCM类型并输入SCM地址,如下图所示:

Maven学习第3期---m2eclipse使用

单击Next按钮之后,用户可以选择项目导入的本地位置,然后单击Finish按钮,m2elipse就会在后台使用SCM 工具签出项目许执行Maven构建。

三、访问Maven库

有了m2eclipse,用户可以直接在Eclipse中浏览本地和远程的Maven仓库,并且能够基于这些仓库的索引进行构件搜索和Java类搜索。这样就免去了离开Eclipse访问本地文件系统或者浏览器的麻烦,提高了日常开发的效率。

3.1 Maven仓库视图

m2eclipse提供了Maven仓库视图,能让用户方便地浏览本地及远程仓库的内容,不过默认情况下该视图不被开启。要开启Maven仓库视图,依次选择Eclipse菜单栏中的Windows→Show View→Other选项,Eclipse会弹出一个对话框让用户选择要打开的视图,选择Maven类下的Maven Repositories,如下图所示:

Maven学习第3期---m2eclipse使用

这时可以在Eclipse窗口下方看到Maven仓库视图,这个视图中包含了4类Maven仓库,分别为:

■ 本地仓库

■ 全局仓库

■ 项目仓库

■ 自定义库

如下图所示:

Maven学习第3期---m2eclipse使用

其中,本地仓库包含了Maven的本地仓库以及当前Eclipse工作区的项目;全局仓库默认是Maven*仓库,但是如果在settings.xml中设段了镜像,全局仓库就会自动变更为镜像仓库。最后,如果当前Maven项目的pom. xml中配置了其他仓库,它们就会被自动加入到项目仓库这一类中。这些仓库的信息来源于用户的settings. xml文件和工作区中Maven项目的pom.xml文件。

用户可以以树形结构快速浏览仓库的内容,双击叶子节点,打开构件对应的POM文件,如下图所示。

Maven学习第3期---m2eclipse使用

大家可能已经猜到,m2eclipse其实不会真正地去存储所有仓库的内容,那样需要消耗大量的磁盘及网络带宽。因此与Nexus一样,m2eclipse使用nexus-indexer索引仓库内容的信息。以全局仓库central为例,用户在首次使用m2eclipse的仓库浏览及搜索功能之前,需要构建该仓库的索引,在如下图所示的仓库上右击。

Maven学习第3期---m2eclipse使用

快捷菜单中的Rebuild Index让m2eclipse重新下载完整的远程索引,由于当前仓库是central,索引文件较大,因此重建该索引会消耗比较长的时间。Update Index则让m2eclipse以增量的方式下载索引文件。如果是本地仓库,Update Index将无法使用,而Rebuild Index的效果是重新遍历本地仓库的文件建立索引。

上图中的菜单还有几个选项,Disable Index Details让m2eclipse关闭该仓库的索引,从而用户将无法浏览该仓库的内容,或者对其进行搜索。Minimum Index Enabled表示只对仓库内容的坐标进行索引,而Enable Full Index不仅索引仓库内容的坐标,还索引这些文件所包含的Java类信息,从而能够支持用户搜索仓库中的Java类.

3.2 搜索构建和java类

有了仓库索引之后,用户就可以通过关键字搜索Maven构件了。单击Eclipse菜单栏中的Navigate,再选择Open Maven POM选项,就能得到构件搜索框。输入关键字后就能得到一个结果列表,还可以点击列表项进一步展开以查看版本信息,如下图所示。双击某个具体版本的构件,能让m2eclipse直接打开对应的POM文件。

Maven学习第3期---m2eclipse使用

如果为仓库开启了Enable Full Indexdt选项,也就是说索引中包含Java类型信息,则就可以通过Java类名的关键字寻找构件。单击Eclipse菜单栏中的Navigate,再选择Open type from maven就能得到类搜索框。输入关键字后,就能得到下图所示的搜索结果。同样,用户可以单击列表项展开其版本,还可以双击具体版本打开其POM。这样不用离开Eclipse,用户就能随时搜索想要使用的类库以及Java类,m2eclipse仅仅要求用户提供一些必要的关键字,这无疑是非常方便的。

四、管理项目依赖

添加Maven依赖的传统做法是先搜索得到依赖的坐标,然后配置项目的pom. xml文件,加入dependency元素。当然,在m2eclipse中也可以这样做,不过m2eclipse提供了更方便的添加依赖的方法,用户直接根据关键字搜索依赖并从结果中选择即可。此外,m2eclipse还提供了丰富的可视化界面帮助用户分析项目中的各种依赖以及它们之间的关系。

4.1 添加依赖

在m2eclipse中有多种添加依赖的方法,直接编辑pom.xml是一种,不过这里要讲的是另外两种更方便的做法。

第一种

首先用户可以在项目上或者pom. xml上右击,然后选择Maven,再选择Add Depenclency添加依赖,如下图所示:

Maven学习第3期---m2eclipse使用

在弹出的对话框中,用户只需要输入必要的关键字,然后选择要添加的依赖及版本,并且设定正确的依赖范围,单击OK按钮之后,依赖就被自动加入到pom.xnil中,如下图所示,就为项目添加了javax.servlet:servlet-api:2.5这样一个依赖,并且在图的下方选择了provided这样的一个范围。

Maven学习第3期---m2eclipse使用

第二种

第二种快速添加依赖的方式是使用m2eclipse的POM编辑器。默认情况下,用户双击项目的pom.xml就能打开POM编辑器,POM编译器下方有很多选项卡,包括概览、依赖、插件、报告、依赖层次、依赖图、Effective POM等。其中,依赖(Dependencies)一项可以用来添加、删除和编辑依赖,如下载所示。

Maven学习第3期---m2eclipse使用

注意:如果,双击看不到上面的界面。可能是因为,安装的m2e插件本身就是不全的,里面根本没有pom editor。所以需要下载pom editor的zip包:

http://download.csdn.net/detail/honestjiang/8508393

解压之后,直接放到原来那个m2e的插件包 的plugin下面即可,即m2eclipse\eclipse\plugins\org.eclipse.zest.XXX的两个zip,重启之后,右 键pom.xml即有pom editor打开方式了。

单击上图中上方的Add按钮,就能得到如下图所示的添加依赖对话框:

Maven学习第3期---m2eclipse使用

此外,从图中还可以看到,用户可以查看依赖的细节并对其进行编辑。添加项目依赖之后,如果m2eclipse没有自动将依赖更新至项目的构建路径,用户可以强制要求m2eclipse更新,方法是在项目或者pom. xml上右击,选择Maven,再选择Update Dependencies或ctrl+S保存。

4.2 分析依赖

介绍了如何使用maven-dependency-plugin分析并优化项目的依赖,Maven用户可以在命令行以树状的形式查看项目的依赖以及它们之间的关系;有了m2eclipse,这种可视化的分析将更为清晰和直观。

开启POM编辑器中的依赖层次项(Dependency Hierarchy),就能看到图下图所示的依赖层次图。

Maven学习第3期---m2eclipse使用

上图中左边列表显示了项目的树形依赖层次,右边列表则是所有Maven最终解析得到的依赖。默认情况下,两个列表都会显示依赖的artifact、versIon以及scope。要查看依赖的groupld,可以单击列表上方右起第二个按钮Show Groupld。

有了这样一个依赖层次图,用户就能很清晰地看到所有依赖是如何进入到项目中来的,可能这是个直接依赖,那么在左边的它就是个顶层节点;可能这是个传递性依赖,那么这个树形层次就能够告诉用户传递路径是什么;如果这个依赖是同一Maven项目的另外一个模块,那么它的图标将与其他依赖不同,而是一个文件夹的样子,如果用户单击右边已解析依赖列表中的任意一项,左边就会自动更新为该依赖的传递路径。

如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【Sunddenly】。

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利

Maven学习第3期---m2eclipse使用的更多相关文章

  1. Maven学习第4期---Maven简单使用

    一.Maven常用命令 在学习使用Maven构建项目之前,先来了解一下Maven一些实用的命令.mvn的命令有很多,在项目开发中,理解了下面的几个常用命令后,运用maven就基本没有问题了.Maven ...

  2. Maven学习第2期---Maven安装配置

    一.Maven介绍 1.1 何为Maven Maven这个词可以翻译为"知识的积累",也可以翻译为"专家"或"内行".Maven是一个跨平台 ...

  3. Maven学习第1期---Maven简单介绍

    前言 Hadoop的MapReduce环境是一个复杂的编程环境,所以我们要尽可能地简化构建MapReduce项目的过程.Maven是一个很不错的自动化项目构建工具,通过Maven来帮助我们从复杂的环境 ...

  4. Maven学习 (三) 使用m2eclipse创建web项目

    1.首先确认你的eclipse已经安装好m2eclipse的环境,可以参照上两篇Maven学习内容 2.新建一个maven的项目 3.下一步默认配置,使用默认的工作空间,或者你可以自己选择其他的空间 ...

  5. maven学习3,如何创建一个web项目

      Maven学习 (三) 使用m2eclipse创建web项目   1.首先确认你的eclipse已经安装好m2eclipse的环境,可以参照上两篇Maven学习内容 2.新建一个maven的项目 ...

  6. TODO maven学习笔记

    maven是什么? 我的体会 我理解得maven就是一个构建工具,可以做一些项目得整合操作,我们把一些常见得操作,封装在maven里面,并给它命名成 clean,test,compile,这些步骤都是 ...

  7. Maven学习- 使用Maven构建Web项目

    从网上查了一些资料,才算明白(也就是怎么操作吧),怎么使用Maven构建一个Web项目,找到一篇文档,主要都是从这里学到的: 下载地址:使用Eclipse构建Maven的Web项目.docx 现自己在 ...

  8. 【Maven学习】Nexus OSS私服仓库的备份与迁移

    背景 在上一篇博客 [Maven学习]Nexus OSS私服仓库的安装和配置 中,我们已经在机房搭建好了新的Nexus OSS私服仓库.下面是两个版本的Nexus OSS私服仓库的对比图. 老的Nex ...

  9. Maven学习-目录结构

    在前一篇文章中,我们介绍了什么是Maven,以及如何用Maven来构建我们的项目.不了解Maven的童鞋,可以看这里Maven学习-入门.在这篇文章中,我们将学习Maven的项目的目录结构相关的内容. ...

随机推荐

  1. 妙用Javascript中apply、call、bind

    对apply.call.bind的认识,并且列出一些它们的妙用加深记忆.   apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(cont ...

  2. IE11之F12 Developer Tools--概述篇

    打开Developer Tools的方法: a. 点击F12 b. 在浏览器中选择Tools-->F12 Develooper Tools 打开后图示: 从上图我们可以看到,Developer ...

  3. 【Subsets】cpp

    题目: Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset ...

  4. 如何打开“USB调试”模式?

    请首先确认您的系统版本, 点击「设置」-「关于手机」查看您当前的手机版本号. 如果您使用的是 Android 3.2及以下系统,请按以下步骤操作: STEP1:在应用列表选择「设置」进入系统设置菜单: ...

  5. hdu-5364 Distribution money

    http://acm.hdu.edu.cn/showproblem.php?pid=536 Distribution money Time Limit: 2000/1000 MS (Java/Othe ...

  6. [转] CSS transition

    https://css-tricks.com/almanac/properties/t/transition/ The transition property is a shorthand prope ...

  7. 你不知道的JavaScript--Item24 ES6新特性概览

    ES6新特性概览 本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代 ...

  8. Go 语言笔记

    Go 语言笔记 基本概念 综述 Go 语言将静态语言的安全性和高效性与动态语言的易开发性进行有机结合,达到完美平衡. 设计者通过 goroutine 这种轻量级线程的概念来实现这个目标,然后通过 ch ...

  9. Vue.js最简单的代码

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  10. Scout YYF I POJ - 3744&lpar;概率dp &plus; 矩阵快速幂&rpar;

    题意: 一条路上有n个地雷,你从1开始走,单位时间内有p的概率走一步,1-p的概率走两步,问安全通过这条路的概率 解析: 很容易想到 dp[i] = p * dp[i-1] + (1 - p) * d ...