这次升级到eclipse到juno版本,趁机整理了常用的eclipse plugin,目标是为了让开发人员尽可能把工作环境集中在eclipse上,而不用打开各式各样的文档编辑器或一堆其他别的软件。由于开发过程中每个团队使用的软件各不相同,因此本文更多的是一个在eclipse集成思路,不同团队可以根据自己的需要集成与本文不同的插件。
这里先说明本团队的开发集成环境
版本控制:egit
aop(部分):aspectj
项目控制:maven
bug管理:jira
web中间件:tomcat
中间件热布署加强:jrebel
关系数据库:MySQL
NoSQL:MongoDB
页面实现:FreeMarker
主体框架:Spring+Struts
集成发布:jenkins
其他项目属性及目标:
字符集:UTF-8
目标1:代码快速生成Spring+Struts
目标2:集成链接jenkins、jira,在eclipse即时管理bug,修复bug;在eclipse即时集成发布。
目标3:在eclipse里完成数据库设计,链接数据库及相关数据操作。
目标4:快速生成测试框架代码,持续集成测试(这个目标暂列未实现)
一、版本控制,egit - http://download.eclipse.org/egit/updates
git使用相对比较复杂,guide:http://wiki.eclipse.org/EGit/User_Guide
(之所以把egit放在第一个位置,是因为在安装的过程中走了弯路: 在实际操作时随意安装了一些插件后,再安装egit plugin时,安装过程没有任何问题,但在eclipse界面里,egit怎么也出不来。无奈只好再次打开一个刚下载干净的eclipse,这次第一个先安装egit插件,问题解决。)为了不浪费时间,还是乖乖的第一个先装egit插件吧,虽然可能其他人不会出现这样的问题。
二、aop实现,ajdt aspectj插件
三、maven项目控制,m2eclipse maven插件
四、bug管理跟踪,jira plugin 连接jira插件(也可以在mylyn connector discovery下安装)
升级到juno并安装上述四步后先导入工程
导入后pom.xml出错
1、工程报错,需要依赖tools.jar 1.5版本,这跟eclipse升级后的启动初始有关系,解决办法:修改eclipse.ini文件,在-vmarg之前加上-vm
D:\java\jdk1.6.0_17\bin
重起eclipse发现问题得到解决,当然直接用命令的方式eclipse -vm "D:\java\jdk1.6.0_17\bin"也是一样的。另外一种办法就是在pom.xml文件加上这个依赖包。
2、升级m2eclipse版本后,对以下语句不能编译通过
<executions>
<execution>
<id>compile and test-compile</id>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
用以下办法解决:
Preferences->Maven->Discovery->Open Catalog选择安装m2e wtp。安装后根据错误提示,点击确定会自动加上一些m2e配置片段。
然后maven->update project,错误消失。
都正常后,把工程置为maven、aspect,正常连接git和jira,一切都正常了。接下来装tomcat插件
五、热布署,jrebel http://zeroturnaround.com/software/jrebel/eclipse-jrebel-tutorial/
六、tomcatplugin
七、shell and folder plugin 可以快捷打开window cmd、linux和unix的terminal,快捷定位到文件的位置
http://openextern.googlecode.com/svn/trunk/openextern_update/
安装这个插件,可以通过这个插件打开的命令窗口并定位到目录。在我们的开发习惯里,自带的m2eclipse及egit插件与命令行相比,还是有要弱很多,因此在工作过程中,可以利用此插件,快速打开命令窗口并定位到要操作的目录。为了方便起见,先把mvn及git执行
目录先设置到环境变量PATH里,这样在定位到目录后可直接执行命令。可以省下不少上下文操作时间。
八、UTF-8编辑器,propertiese editor plugin
九、Spring+Struts代码快速生成,fast-code for spring plugin http://sourceforge.net/projects/fast- code/files/update/
fastcode一定要注意其命名规则,之前的dao命名都被命名成XxxDao,而fastcode默认为XxxDAO,到fastcode配置里把默认的都改成DAO改成Dao,就我们的项目业务层,主要启用
1、pojo生成,如果数据库使用mysql、oracle、postgresQL等关系型数据库,可以配置数据库链接,自动生成pojo;
生成的java文件命名为TablenamePOJO.java,想改成直接命名Tablename.java,但找不到配置,只得生成
TablenamePOJO.java后再重命名成Tablename.java。
2、创建dao接口及实现类,通常关系型数据库与NoSQL数据库的父类BaseDao会分开写,因此这里继续哪个Dao需要在开发过程中自行设置。
Dao命名按命名规则,中间字母不要出现大写。
这里关系型数据库MySQL时Code In the Class(Body)配置,以下代码样例
private static final Table T = new Table( "${input.toLowerCase()}", "",// to fill primary key,if composite key,use String[] new String[] { /* developer to fill data column */ } ); public static final ParameterizedRowMapper<${input}> map = new ParameterizedRowMapper<${input}>() { public ${input} mapRow(ResultSet rs, int rowNum) throws SQLException { ${input} entity = new ${input}(); /* developer to set properties */ return entity; } }; public ${input} get(String uuid){ return getJdbcTemplate().queryForObject(T.buildSqlSelect(" uuid = ? "), map, uuid ); } public void insert(${input} ${input.toLowerCase()}) { getJdbcTemplate().update(T.getSqlInsert()/* developer to fill entity.getColumn*/); } public void update(${input} ${input.toLowerCase()}) { getJdbcTemplate().update(T.getSqlUpdate()/* developer to fill entity.getColumn,last parameter is primary key*/); } public void delete(String uuid) { getJdbcTemplate().update(T.buildSqlDelete("uuid = ?"), uuid); } public Result<${input}> getResult(/** to fill other parameters **/ int offset,int limit){ return null; }
MongoDB使用以下配置
public ${input} get(String uuid){ return super.get(uuid); } public void save${input}(${input} ${input.toLowerCase()}) { super.save(${input.toLowerCase()}); } public void delete(String uuid) { super.deleteByQuery(createQuery().filter("uuid", uuid)); } public Result<${input}> getResult(/** to fill other parameters **/ int offset,int limit){ return null; }
这些代码只生成在DaoImpl.java里,Dao接口本身不能产生以上接口,还得花几秒钟的时间把以上代码拷到Dao接口代码里,
然后Ctrl+F 输入Find:\)[\s]*\{[^\}]*\} Replace with: );点Replace All,这样在接口里就有这5个默认的接口了。
如果需要其他接口和实现,开发人员再自行新增。
3、生成相似类,相似类从Dao接口生成Service接口及ServiceImpl
4、从service生成action,默认是生成handler,修改配置后让忽略handler命名,直接生成action
5、如果手动创建了dao接口,可以利用Create Similar Preference Different Name生成Dao实现类。(默认只能Dao接口生成对应的implements对象)
6、插件还可以生成测试框架代码,使用过程中有点问题,暂不支持。
十、freemarker plugin 在marketplace搜索freemarker,安装JBoss Tools(Indigo);非常庞大,选中其中的freemarker ide安装即可。
十一、Hundson/Jenkins
mylyn的一个connector,安装的时候从mylyn connector discovery进入安装,但这个搜索非常不稳定,10次里只有一两次成功。
mylyn把connector分成task repository、team repository。Hundson/Jenkins connector属于team repository。安装成功,不能通过
Validate校验。原因是hundson connector对Jenkins 1.447之后的版本支持存在bug。目前只有一种解决办法把jenkins退回到1.447版本。
另外新装的jenkins有几个插件必须装上
Jenkins GIT plugin
Deploy to container Plugin
还有相关的SSH插件分不清是哪个,是SSH都勾上装了
十二、MonjaDB -- mongodb client plugin
十三、Database Designer(未破解)
有了这两个数据库客户端插件,可以考虑不用安装数据库客户端软件,也可以直接用于设计关系型数据库,进一步脱离像powerdesigner及UML之类的软件。因为eclipse可以基于Windows、Mac及其他Linux操作系统,这样可以很好的移植开发环境。
十四、更炫的风格选择,Eclipse Color Theme Plugin
十五、一直想找个email收发的插件,只有一个for outlook,且受限于操作系统平台并且是商用的。
附foxmail设置如果使用foxmail可以在系统设置里,设置成自动启动;关闭时最小化到托盘区,不退出,这样邮箱在外关上不占界面显示。
另外在邮箱帐号属性->服务器 默认设置 每隔15分钟自动收取新邮件。时间间隔可以置更长或更短,这样可以让邮箱来通知开发者是否有其他新任务。
最后如果你想对某些邮件做自动回复,可以在过滤器里帮设置。