m2eclipse为eclipse环境提供了全面丰富的maven集成,主要功能如下:
创建和导入maven项目
管理依赖并与ecliplse的classpath集成
自动下载依赖
自动解析依赖的sources与javadoc包
使用maven archetype创建项目
浏览与搜索远程maven仓库
从maven pom具体化一个项目
从scm仓库签出maven项目
自动适配嵌套的多模块maven项目至eclipse
集成web tools projects(wtp)
集成subclipse
集成mylyn
可视化pom编辑
图形化依赖分析
新建maven项目
create a simple project(skip archetype selection)
只包含最基本的maven项目目录结构
archetype catalog有4个:
maven-archetype-plugin内置的internal、本地仓库的default local、m2eclipse下载到仓库索引中包含的nexus indexer,
以及所有这3个合并得到的all catalogs
一般来说,只需要选择internal,然后再选择一个archetype(如maven-archetype-quick-start)
导入maven项目
导入本地项目
从scm仓库导入项目(需要eclipse已经安装了scm的eclipse插件,如subclipse,还需要m2eclipse的附属组件
maven scm integration以及对应的scm handler,如集成subclipse的maven scm handler for subclipse
install or deploy an artifact to a maven repository:能让用户将任意的文件安装到maven的本地仓库。如果该文件没有对应的pom,则需要为其定义maven坐标。
materialize maven projects:让用户导入第三方的maven项目,如junit
m2eclipse中的maven项目的结构
src/main/java,src/main/resources,src/test/java,src/test/resources都被自动转换成了eclipse中的源码文件夹(source folder)
maven的依赖则通过eclipse库(libraries)的方式引入,所有maven依赖都在一个名为maven dependencies的eclipse库中。
需要注意的是:这些依赖文件并没有复制到eclipse工作区,只是对maven本地仓库的引用。
所有的源码文件夹和maven依赖都在eclipse项目的构建路径(build path)中
当然用户可以直接访问项目根目录下的pom.xml文件。此外,代码目录和资源目录之外的其他目录不会被转换成eclipse的源码文件夹,
不会被加入到构建路径中,但用户还是可以在eclipse中访问它们。
注意:如果用户更改了pom内容且导致项目结构发生变化,m2eclipse可能无法自动识别,需要手工进行update project configuration
执行mvn命令
自定义mvn命令 maven build ...
访问maven仓库
有了m2clipse,可以直接在eclipse中浏览本地和远程的maven仓库,并且能够基于这些仓库的索引进行构件索引和java类搜索。
仓库视图中包含了3类maven仓库,分别为本地仓库,全局仓库,以及项目仓库
全局仓库默认为中央仓库,但如果在settings.xml中设置了镜像,就会自动变更为镜像仓库
如果当前maven项目的pom.xml中配置了其他仓库,就会被自动加入到项目仓库这一类中。
这些仓库的信息来源于用户的settings.xml和工作区的maven项目的pom.xml文件
m2eclipse不会真正的去存储所有仓库的内容,那样需要消耗大量的磁盘及网络带宽。与nexus一样,使用nexus-indexer索引仓库内容的
信息,以全局仓库central为例,用户在首次使用m2eclipse的仓库浏览及搜索功能之前,需要构建该仓库的索引。
一般情况下,建立本地仓库的索引即可。
管理项目依赖
添加依赖
通过右键菜单选择add dependency
双击pom.xml打开pom编辑器,使用m2eclipse的pom编辑器
直接编辑pom.xml
分析依赖
effective pom
任何一个项目的pom都至少继承自maven内置的超级pom.
effective pom表示一个合并整个继承结构所有信息的pom
maven用户可以直接从命令行获得effective pom
mvn help:effective-pom
下载依赖源码
m2eclipse能够自动下载并使用依赖的源码包,当你需要探究第三方开派依赖的细节,或者在调试应用程序的时候,这一特性非常有用。
但该功能的前提是依赖提交了相应的源码包至maven仓库