idea 到myeclipse
在上一篇博客使用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文件:

显然的,可以得出以下几个结论:
- kind="src",path=src/main/java,里面说明了src的位置;
- kind="output”,path=target/classes,说明了target目录的位置;
- 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的更多相关文章
- myeclipse学习总结一(在MyEclipse中设置生成jsp页面时默认编码为utf-8编码)
1.每次我们在MyEclispe中创建Jsp页面,生成的Jsp页面的默认编码是"ISO-8859-1".在这种情况下,当我们在页面中编写的内容存在中文的时候,就无法进行保存.如下图 ...
- 【解决方案】Myeclipse 10 安装 GIT 插件 集成 步骤 图解
工程开发中,往往要使用到集成GIT ,那么下面说说插件安装步骤 PS:以Myeclipse 10 为例,讲解集成安装步骤. ----------------------main------------ ...
- MyEclipse生成注册码
今天正在使用的MyEclipse出现了使用过期,在网上发现一个可以生成注册码的程序,现在分享给各位. /** * myEclipse生成注册码 * 点击顶部:MyEclipse --> subs ...
- myeclipse 内存不够用报错PermGen space 和 An internal error has occurred.
最近项目中又增加了新的模块,项目的代码又多了不少.运行的时候总是报如下错误 Exception in thread "http-apr-80-exec-6" java.lang.O ...
- WebLogic的安装和配置以及MyEclipse中配置WebLogic
WebLogic 中间件: 是基础软件的一大类,属于可复用软件的范畴,顾名思义,中间件属于操作系统软件与应用软件的中间,比如:JDK,框架,weblogic. weblogic与tomcat区别 : ...
- MyEclipse对Maven的安装
好记性不如烂笔头,记录一下. 操作系统:windows 7 MyEclipse2015 JDK1.7 maven的下载链接,点这里下载apache-maven-3.0.4-bin.tar.gz. 下载 ...
- MyEclipse 的 配置文件
D:\soft\i\myeclipse10\MyEclipse 10\configuration.settings\org.eclipse.ui.ide.prefs MAX_RECENT_WORKSP ...
- 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 双击启动失败, ...
- myeclipse学习总结三(MyEclipse文件查找技巧)
一.查找文件 使用快捷键[ctrl+shift+R]弹出弹出文件查找框,如下图所示: 二.查找包含某个字符串的文件 使用快捷键[ctrl+H]在弹出对话框中选File Search选项,然后在第一个文 ...
- myeclipse学习总结二(myeclipse安装svn插件)
1.在myeclipse中要安装svn插件,首先是下载svn插件. 下载地址:http://subclipse.tigris.org/servlets/ProjectDocumentList?fold ...
随机推荐
- 修改crontab默认的编辑器
1.crontab默认的编辑器为nano; 2.修改为vi或其他编辑器 export EDITOR="/usr/bin/vim" ; crontab -e
- Java-->Gson解析相较于Json
--> Gson解析jar包: 链接:http://pan.baidu.com/s/1slCeq77 密码:f9ig --> 官方Json解析工具类: package com.drago ...
- TCP链接时主动close时可能的rst报文
阿里核心系统团队博客http://csrd.aliapp.com/?p=1055记录了主动关闭TCP socket时,可能不发fin包,而是发rst的问题. 其原因是主动关闭socket时,若接收bu ...
- LA 3938 动态最大连续和 线段树
题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...
- 《C与指针》第四章练习
本章问题 1.Is the following statement legal?If so,what does it do? (下面的语句是否合法,如果合法,它做了什么) 3 * x * x - 4 ...
- 基于MVC4+EasyUI的Web开发框架形成之旅--权限控制
我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大概介绍了基于MVC的Web开发框架的权限控制总体思路.其中的权限控制就是分为“用户登录身份验证” ...
- 初识WebSocket协议
1.什么是WebSocket协议 RFC6455文档的表述如下: The WebSocket Protocol enables two-way communication between a clie ...
- [platform]linux platform device/driver(三)--Platform Device和Platform_driver注册过程之代码对比
转自:http://blog.csdn.net/thl789/article/details/6723350 Linux 2.6的设备驱动模型中,所有的device都是通过Bus相连.device_r ...
- HTML 全局属性_02
New : HTML5 新属性. 属性 描述 accesskey 设置访问元素的键盘快捷键. class 规定元素的类名(classname) contenteditableNew 规定是否可编辑元素 ...
- spring java 获取webapp下文件路径
spring java 获取webapp下文件路径 @RequestMapping("/act/worldcup_schedule_time/imgdownload") @Resp ...