Java开源项目——源码阅读方法,二次开发方法

一直以来,都想要阅读某些Java开源项目的源代码,甚至想要修改某些代码,实现对开源项目进行二次开发的目的。但总是不知从何入手,直接将开源项目的源代码导入Eclipse,总是会报很多错误,而无法编译。

下面以Axis2源代码为例,做一个小实验例子,修改services/listServices请求的处理源码,使得原先仅支持WSDL方式描述的Web服务现在也支持OWL4WS的Web服务描述。看到文末有惊喜!

第一步:安装maven

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

第二步:安装Eclipse的maven插件

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

m2e - http://download.eclipse.org/technology/m2e/releases

如 http://www.eclipse.org/m2e/download/ 所示,上述插件的路径应该为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. [plain] view plaincopyprint?
  2. C:OpenSourceaxis2-1.6.0-srcaxis2-1.6.0modules ransporthttp>mvn clean install
  3. [INFO] BUILD SUCCESS
  4. C:OpenSourceaxis2-1.6.0-srcaxis2-1.6.0moduleswebapp>mvn clean package
  5. [INFO] Building war: C:OpenSourceaxis2-1.6.0-srcaxis2-1.6.0moduleswebapp argetaxis2.war
  6. [INFO] BUILD SUCCESS

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

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

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

对Java感兴趣的在这里给大家免费分享一波福利,都是视频资料,里面就包涵了Java高并发、分布式、微服务、高性能、源码分析、JVM等技术资料

感兴趣的关注+转发+私信回复【Java资料】,【免费】获取!

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券