在上一篇博客使用maven进行开发过程管理之准备篇中提到了maven的基本概念。IT男罗书全觉得概念我是懂了,但是那些东西似乎离我很远啊。先开发再说吧,

于是IT男罗书全就在svn上取了源代码,并开始导入到本地开发环境中去。三下五除二,点击import,出现熟悉的导入界面。

导入失败,这是怎么回事?问了同事才知道,公司使用的是idea开发环境,而自己用的是eclipse.怎么办呢?放弃自己心爱的eclipse,真痛苦,而且不熟悉会导致开发效率较低。有没有两全其美的办法呢?有的。

想想大家做数据访问层时,hibernate是怎么实现兼容不同数据库的呢?创立中间的一种语言,比如hql,在配置里得知连接的数据库具体类型时,调用其适配功能实现hql-->相应数据库sql的转换。Maven的原理也是类似,提供了pom描述文件来对项目的组成要素做了说明,如src,target,lib等的位置,在命令中得知需要适配哪个开发环境中时,就可以转换过去。这样就给具体开发提供了一定的灵活性。在maven中提供了转换到主流环境eclipse的插件maven-eclipse-plugin,相应转换命令是eclipse:eclipse.对于IDEA也提供了转换到IDEA的插件maven-idea-plugin,转换到相应开发环境的命令是idea:idea.

IT男罗书全在命令行中进入项目所在根目录下,运行mvn eclipse:eclipse,然后导入,成功了。IT男罗书全欣喜万分,在欣喜万分的同时,又疑惑了,maven是怎么做的转换的呢?

其实任何开发环境都是要识别项目特性,才能顺利进行开发的。比如在eclipse项目里面,可以看到有几个基本要素,如像src/main/java文件夹上有个包的,就是源代码目录,源代码目录就是放置用户编写源代码的位置。像target目录,就是生成目标文件的地方,如class文件等。Referenced Libraries就是放置项目依赖的jar包的地方等。

这些项目描述都是在.classpath和.project中说明的。例如.classpath文件:

显然的,可以得出以下几个结论:

  1. kind="src",path=src/main/java,里面说明了src的位置;
  2. kind="output”,path=target/classes,说明了target目录的位置;
  3. kind=“var”,说明的是一个lib的位置。

.project文件中说明了此项目需要的插件,以及使用的builder.

那么maven又是怎么做的呢?其实他也是分析了所有开发环境的共性,而对其概念作了抽象。在下面的代码中说明:

org.apache.maven.plugin.ide.AbstractIdeSupportMojo.java

   1:        boolean processProject = setup();
   2:        if ( !processProject )
   3:        {
   4:            return;
   5:        }
   6:        // 解析得到所有的依赖,形成lib引用
   7:        IdeDependency[] deps = doDependencyResolution();
   8:        //绑定source代码和javadoc
   9:        resolveSourceAndJavadocArtifacts( deps );
  10:        //生成特定开发环境的配置文件
  11:        writeConfiguration( deps );
  12:        reportMissingArtifacts();

这是个template模式的实现,具体的开发环境只要继承AbstractIdeSupportMojo来override其中的writeConfiguration(deps)来生成具体的配置文件。

因此,maven 对开发环境与源代码的隔离提供了强有力的插件支持,兼顾了不同程序员的爱好,从而提高了整体的开发效率。

idea 到myeclipse的更多相关文章

  1. myeclipse学习总结一(在MyEclipse中设置生成jsp页面时默认编码为utf-8编码)

    1.每次我们在MyEclispe中创建Jsp页面,生成的Jsp页面的默认编码是"ISO-8859-1".在这种情况下,当我们在页面中编写的内容存在中文的时候,就无法进行保存.如下图 ...

  2. 【解决方案】Myeclipse 10 安装 GIT 插件 集成 步骤 图解

    工程开发中,往往要使用到集成GIT ,那么下面说说插件安装步骤 PS:以Myeclipse 10 为例,讲解集成安装步骤. ----------------------main------------ ...

  3. MyEclipse生成注册码

    今天正在使用的MyEclipse出现了使用过期,在网上发现一个可以生成注册码的程序,现在分享给各位. /** * myEclipse生成注册码 * 点击顶部:MyEclipse --> subs ...

  4. myeclipse 内存不够用报错PermGen space 和 An internal error has occurred.

    最近项目中又增加了新的模块,项目的代码又多了不少.运行的时候总是报如下错误 Exception in thread "http-apr-80-exec-6" java.lang.O ...

  5. WebLogic的安装和配置以及MyEclipse中配置WebLogic

    WebLogic 中间件: 是基础软件的一大类,属于可复用软件的范畴,顾名思义,中间件属于操作系统软件与应用软件的中间,比如:JDK,框架,weblogic. weblogic与tomcat区别 : ...

  6. MyEclipse对Maven的安装

    好记性不如烂笔头,记录一下. 操作系统:windows 7 MyEclipse2015 JDK1.7 maven的下载链接,点这里下载apache-maven-3.0.4-bin.tar.gz. 下载 ...

  7. MyEclipse 的 配置文件

    D:\soft\i\myeclipse10\MyEclipse 10\configuration.settings\org.eclipse.ui.ide.prefs MAX_RECENT_WORKSP ...

  8. myeclipse 无法启动 java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).

    把myeclipse10 按照目录完整拷贝到了另外一台电脑, 另外的目录 原安装目录 D\:\soft\i\myeclipse10 新安装目录 E\:\soft\myeclipse10 双击启动失败, ...

  9. myeclipse学习总结三(MyEclipse文件查找技巧)

    一.查找文件 使用快捷键[ctrl+shift+R]弹出弹出文件查找框,如下图所示: 二.查找包含某个字符串的文件 使用快捷键[ctrl+H]在弹出对话框中选File Search选项,然后在第一个文 ...

  10. myeclipse学习总结二(myeclipse安装svn插件)

    1.在myeclipse中要安装svn插件,首先是下载svn插件. 下载地址:http://subclipse.tigris.org/servlets/ProjectDocumentList?fold ...

随机推荐

  1. Myeclipse+Axis2+Tomcat开发webService

    1.  下载文件: 需要在axis2官网下载两种类型的axis2文件,bin版和war版(下载地址:http://axis.apache.org/axis2/java/core/download.cg ...

  2. ARM compiler No such file or directory

    /********************************************************************************* * ARM compiler No ...

  3. python数据结构与算法——图的最短路径(Dijkstra算法)

    # Dijkstra算法——通过边实现松弛 # 指定一个点到其他各顶点的路径——单源最短路径 # 初始化图参数 G = {1:{1:0, 2:1, 3:12}, 2:{2:0, 3:9, 4:3}, ...

  4. UVa 二叉树重建(先序+中序求后序)

    题意是给出先序和中序,求出后序. 先序遍历先访问根结点,通过根结点可以在中序中把序列分为左子树部分和右子树部分,我建了一个栈,因为后序遍历最后访问根结点,所以把每次访问的根结点放入栈中.因为后序遍历先 ...

  5. 关于java 中文乱码问题 自己的一点解决方案

    早上做导出的时候,url拼接参数中文出现了乱码.查了半天.终于中午搞定了. 在web.xml中加了转码过滤器,tomcat的server.xml中也加入URIEncoding="UTF-8& ...

  6. WorldChat.lua --世界聊天

    print(">>Script: Wolrd Chating.") local SAY=" "--普通聊天 --联盟阵营 --部落阵营 local ...

  7. 将数据集做成VOC2007格式用于Faster-RCNN训练

    1.命名 文件夹名VOC2007.图片名六位数字.将数据集相应的替换掉VOC2007中的数据. (Updated development kit, annotated test data )   2. ...

  8. @ResponseBody 返回中文乱码问题解决 spingmvc

    <!-- UTF8解决乱码问题 --> <bean class="org.springframework.web.servlet.mvc.method.annotation ...

  9. VS问题:该依赖项是由项目系统添加的,不能删除。

    该依赖项是由项目系统添加的,不能删除. 原因:是该项目添加对依赖项的引用时,不是直接引用的dll,而是通过“添加引用->项目”的方式引用的项目. 解决:删除“引用”目录下该依赖项的引用,然后通过 ...

  10. Internetware网构软件(摘抄)

    The Internet provides a global open infrastructure for exchanging and sharing of various resources f ...