Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10010
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 15
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-10 14:43
文章分类
文章存档

2014年(2)

2013年(2)

我的朋友

分类: Java

2014-04-16 21:27:08

一直以来,都想要阅读某些Java开源项目的源代码,甚至想要修改某些代码,实现对开源项目进行二次开发的目的。但总是不知从何入手,直接将开源项目的源代码导入Eclipse,总是会报很多错误,而无法编译。可以直接通过Eclipse打开开源项目的源代码,至少能够达到可视化源码阅读、源码导航的目的,还是能在一定程度上解决源码阅读不爽的问题,因为直接打开并没有改变源文件项目的目录结果,对于修改过后的代码,可以通过命令行找到源文件项目目录,并使用mvn或者ant对项目进行编译,再查看修改后的项目是否正确。


由于当前Java开源项目几乎都是采用maven或者ant的方式打包的,所以上述方法再一定程度上解决了阅读源码的问题,至少通过Eclipse能够实现源码之间的导航,但是想要通过Eclipse进行编译源代码,甚至调试就无法办到了。


这么强大的Eclipse,怎么用起来这么力不从心呢,罪魁祸首还是自己太孤陋寡闻了,这么强大的maven,Eclipse怎么会没有插件支持呢,有了maven插件,Eclipse导入maven项目(也就是大多数开源项目的目录结构),在Eclipse上面就能够直接进行编辑,甚至通过Eclipse去编译、调试源项目。


既然知道了怎样阅读开源项目的源代码,接下来就是安装Eclipse的maven插件,然后源代码、二次开发...


前面说了这么多废话,是否真的有效呢,下面以Axis2源代码为例,做一个小实验例子,修改services/listServices请求的处理源码,使得原先仅支持WSDL方式描述的Web服务现在也支持OWL4WS的Web服务描述。


第一步:安装maven

安装maven实在是简单,从  下载最新的maven版本,然后解压,配置MAVEN_HOME和MAVEN_OPTS以及path环境变量即可。MAVEN_HOME指向maven的跟目录,MAVEN_OPTS配置maven执行时的参数,由于MAVEN默认设置的内存比较少,编译大项目时可能会出现OutofMemory的情况,如我没有设置MAVEN_OPTS而编译Axis2的源码时就出现了OutofMemory的情况,最后配置path,指向%MAVEN_OPTS%\bin即可。使得在命令行界面中能够直接使用maven命令。更多关于maven的介绍,推荐一本书给大家:《Maven实战》,也有叫《Maven in action》,是一个中国人写的,浅显易懂。


第二步:安装Eclipse的maven插件

Help->Install New Software->Add,添加如下内容:

m2e - 

如  所示,上述插件的路径应该为m2e的最新版本,使用之前的版本可能会出现依赖其他插件的情况,导致m2e插件安装不上,SB的Eclipse也没有提示m2e到底依赖哪些插件导致其安装不上,度娘倒是能够提供一下帮助,但是几乎不能找到一个能够使用的。

安装完m2e插件之后,就能通过Eclipse打开maven格式的项目,并能够借助Eclipse对maven格式的源项目进行编译,当然也可以直接通过Eclipse创建一个Maven项目,从而使用maven的方式管理你的项目。maven实在是强大,如果你使用Java语言写程序,了解maven真心是有必要。安装完后再创建项目或者导入项目时,就可以选择Maven进行了。安装完插件后会看到如下效果:


第三步:在Eclipse中修改源代码

通过Eclipse导入maven项目,就能使用Eclipse的可视化导航功能对源码进行阅读及修改,还能直接执行相关的mvn命令,导入后的程序如下图所示:



第四步:通过mvn package编译并打包源码,得到发行版本,进行测试

有了maven,源代码的编译及打包就变得容易多了,可以直接通过Eclipse进行,选择项目右键Run As或者右键单击项目的pom.xml文件Run As即可。如下图所示:



当然,也可以直接通过命令行进行打包编译,我选择采用命令行进行,由于我只修改了Axis2源码中的两个模块,这两个模块分别是axis2-transport-http和axis2-webapp。对这两个模块的命令行编辑命令如下:

  1. C:\OpenSource\axis2-1.6.0-src\axis2-1.6.0\modules\transport\http>mvn clean install  
  2. [INFO] BUILD SUCCESS  
  3.   
  4. C:\OpenSource\axis2-1.6.0-src\axis2-1.6.0\modules\webapp>mvn clean package  
  5. [INFO] Building war: C:\OpenSource\axis2-1.6.0-src\axis2-1.6.0\modules\webapp\target\axis2.war  
  6. [INFO] BUILD SUCCESS  


mvn install是将axis2-transport-http模块安装到maven本地仓库中,而mvn package是将源程序按指定的格式打包,由于webapp模块的pom.xml文件中指定了很多依赖模块,包括其他项目的或者axis2本身的模块,如transport-http模块,打包时会从本地仓库中自动获取其依赖的模块,并打包。如果本地仓库中没有相应的模块,会去网上自动下载,这也是为什么第一次编译开源项目时会花费很长时间的原因。


将axis2.war包拷贝到tomcat的webapp目录下,启动tomcat,在浏览器中输入,即可看到修改后的页面已经对OWL4WS进行了支持。如下图所示:



回过头来,发现本篇文章尽是废话,不过就是想表达一下,maven真心是灰常强大,对于想要阅读Java开源项目源代码,或者有在这些源代码的基础上进行二次开发冲动的童鞋,一定不要错过maven的学习,不过感觉这种方式在修改源代码,然后进行测试这种方式还是非常不方便,命令行编译,还得copy到tomcat下测试运行,哪位有更好的阅读源代码并进行二次开发的方式,请你一定要告诉我啊。

阅读(553) | 评论(0) | 转发(0) |
0

上一篇:Ubuntu下修改DNS重启也能用的方法(转)

下一篇:没有了

给主人留下些什么吧!~~