基于dubbo源码包通过Maven构建dubbo的详细步骤
通过Maven构建dubbo
既然可以下载得到源码以及发布包,那么为什么要去构建dubbo呢?,我们先来看下dubbo的主要模块:
我们不仅要使用dubbo的核心框架,还要使用它的一些服务,比如管理控制台、监控中心和注册中心等等。Dubbo的核心框架是可以在maven的中央仓库下载到,而相关的服务(比如上图中管理控制台、简易控制中心、简易注册中心、示例提供者和示例消费者)是下载不到的,必须由我们自己基于dubbo的源码通过Maven进行构建。
我们这里教给大家如何自己构建dubbo,还有一个原因就是,Dubbo项目从2012年之后就不更新了(据说因为团队解散的原因),那么很有可能以后在企业中我们会基于Dubbo的源码自己做一些修改或添加一些东西,那么改完之后,我们要做编译和打包,到时大家就可以参照本文的构建打包的方法即可。
其中,核心框架、管理控制台、简易监控中心、简易注册中心是我们需要的模块,目前,只有核心模块可以下载到,其它的均无法直接下载,所以我们需要构建dubbo。
当然了,在提供的资料中已经提供了已经构建好的模块提供,也可以选择不重新构建。但是我们最好要掌握好Dubbo的构建过程,因为构建的过程并不容易,它会需要依赖一些其他的东西,而这些东西你还要自己想办法去找,找到了你才能构建出来,找不到你是构建不出来的。在构建之前,我们看一下可能资料中的文件:
下面我们来演示一下如何通过Maven来构建Dubbo,首先要到github上下载dubbo的源码,下载方法如图所示:
我们已经下载好了:
我们先把dubbo-dubbo-2.5.3.zip这个源码包解压到我们的Eclipse的工作空间中:
我们打开解压后的dubbo-dubbo-2.5.3目录,看一下它的工程结构:
我们再把hessian-lite.zip和opensesame.zip这两个压缩包也解压到Eclipse的工作空间中:
下面我们就可以将上面解压到Eclipse工作空间中的3个包导入到Eclipse中:
导入源码到Eclipse
首先,我们在Eclipse中先创建一个WorkingSet:
要先将Eclipse工作空间中的那两个编译依赖导入到Eclipse:
具体导入方法如下:
使用同样的方法再将Eclipse工作空间的opensesame包也导入到Eclipse中。然后再将这两个依赖安装到Maven的本地仓库:
我们首先将“opensesame”工程安装到Maven本地仓库,具体方法是,在工程名称上面单击鼠标右键,选择“Run As”à”Maven Install”即可,但是需要联网,因为它要下载一些依赖包:
用同样的方法将“hessian-lite”也安装到Maven的本地仓库。
再导入dubbo源码到Eclipse:
导入完成:
安装hessian-lite到本地仓库:
安装opensesame到本地仓库
开始构建dubbo
在Eclipse工程中找到“dubbo-dubbo-2.5.3”,在上面点击鼠标右键选择“Run As”à“Maven build…”,在Goals输入框中输入“clean package”命令,并勾选“Skip Tests”以跳过测试,然后点击“Run”开始构建dubbo了,注意此时要保证电脑能联网,因为构建dubbo的过程会到apache官网上下载依赖的包:
构建完成,从Eclipse的控制台上拷贝一段构建成功的日志信息如下:
[INFO] Reactor Summary:
[INFO]
[INFO] dubbo-parent ....................................... SUCCESS [ 0.349 s]
[INFO] dubbo-common ....................................... SUCCESS [ 4.351 s]
[INFO] dubbo-container .................................... SUCCESS [ 0.007 s]
[INFO] dubbo-container-api ................................ SUCCESS [ 0.718 s]
[INFO] dubbo-container-spring ............................. SUCCESS [ 0.368 s]
[INFO] dubbo-container-jetty .............................. SUCCESS [ 0.343 s]
[INFO] dubbo-container-log4j .............................. SUCCESS [ 0.432 s]
[INFO] dubbo-container-logback ............................ SUCCESS [ 0.431 s]
[INFO] dubbo-remoting ..................................... SUCCESS [ 0.003 s]
[INFO] dubbo-remoting-api ................................. SUCCESS [ 1.717 s]
[INFO] dubbo-remoting-netty ............................... SUCCESS [ 0.678 s]
[INFO] dubbo-remoting-mina ................................ SUCCESS [ 0.528 s]
[INFO] dubbo-remoting-grizzly ............................. SUCCESS [ 0.776 s]
[INFO] dubbo-remoting-p2p ................................. SUCCESS [ 0.793 s]
[INFO] dubbo-remoting-http ................................ SUCCESS [ 0.781 s]
[INFO] dubbo-remoting-zookeeper ........................... SUCCESS [ 0.484 s]
[INFO] dubbo-rpc .......................................... SUCCESS [ 0.004 s]
[INFO] dubbo-rpc-api ...................................... SUCCESS [ 1.174 s]
[INFO] dubbo-rpc-default .................................. SUCCESS [ 1.051 s]
[INFO] dubbo-rpc-injvm .................................... SUCCESS [ 0.367 s]
[INFO] dubbo-rpc-rmi ...................................... SUCCESS [ 0.359 s]
[INFO] dubbo-rpc-hessian .................................. SUCCESS [ 0.427 s]
[INFO] dubbo-rpc-http ..................................... SUCCESS [ 0.415 s]
[INFO] dubbo-rpc-webservice ............................... SUCCESS [ 2.279 s]
[INFO] dubbo-cluster ...................................... SUCCESS [ 1.123 s]
[INFO] dubbo-registry ..................................... SUCCESS [ 0.007 s]
[INFO] dubbo-registry-api ................................. SUCCESS [ 0.839 s]
[INFO] dubbo-monitor ...................................... SUCCESS [ 0.004 s]
[INFO] dubbo-monitor-api .................................. SUCCESS [ 0.366 s]
[INFO] dubbo-filter ....................................... SUCCESS [ 0.004 s]
[INFO] dubbo-filter-validation ............................ SUCCESS [ 0.429 s]
[INFO] dubbo-filter-cache ................................. SUCCESS [ 0.398 s]
[INFO] dubbo-registry-default ............................. SUCCESS [ 0.419 s]
[INFO] dubbo-monitor-default .............................. SUCCESS [ 0.370 s]
[INFO] dubbo-registry-multicast ........................... SUCCESS [ 0.443 s]
[INFO] dubbo-config ....................................... SUCCESS [ 0.005 s]
[INFO] dubbo-config-api ................................... SUCCESS [ 1.157 s]
[INFO] dubbo-config-spring ................................ SUCCESS [ 1.080 s]
[INFO] dubbo-rpc-thrift ................................... SUCCESS [ 0.898 s]
[INFO] dubbo-rpc-memcached ................................ SUCCESS [ 0.469 s]
[INFO] dubbo-rpc-redis .................................... SUCCESS [ 0.607 s]
[INFO] dubbo-registry-zookeeper ........................... SUCCESS [ 0.574 s]
[INFO] dubbo-registry-redis ............................... SUCCESS [ 0.724 s]
[INFO] dubbo .............................................. SUCCESS [ 5.777 s]
[INFO] dubbo-simple ....................................... SUCCESS [ 0.003 s]
[INFO] dubbo-registry-simple .............................. SUCCESS [ 5.491 s]
[INFO] dubbo-monitor-simple ............................... SUCCESS [ 11.807 s]
[INFO] dubbo-admin ........................................ SUCCESS [ 4.867 s]
[INFO] dubbo-demo ......................................... SUCCESS [ 0.003 s]
[INFO] dubbo-demo-api ..................................... SUCCESS [ 0.237 s]
[INFO] dubbo-demo-provider ................................ SUCCESS [ 9.309 s]
[INFO] dubbo-demo-consumer ................................ SUCCESS [ 9.491 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:16 min
[INFO] Finished at: 2016-05-31T11:22:10+08:00
[INFO] Final Memory: 73M/1725M
[INFO] ------------------------------------------------------------------------
再来一张截图:
在构建的时候,通过Eclipse的控制台可以看到dubbo的构建过程比较漫长,很多的工程都是一个一个进行处理的,由此可见,对于一些大型的项目,整个打包的过程也是需要消耗一定时间的。
那么,我们的dubbo构建打包完成后,打好的包在哪里呢?注意我们这里是通过“package”命令进行打的包,而不是我们以前说的那个“Maven Install”命令打的包。通过“Maven Install”打好的包会放在Maven的本地仓库中,而我们通过“package”命令打好的包是放在对应的target目录下。
找到对应的模块包:
核心框架:
在我们打好的包中,其中dubbo的核心包是放在“dubbo-dubbo-2.5.3\dubbo\target”目录下:
管理控制台
其中管理控制台的包是在“dubbo-dubbo-2.5.3\dubbo-admin\target”目录下:
简易监控中心
其中我们打好的监控中心的包是在“dubbo-dubbo-2.5.3\dubbo-simple\dubbo-monitor-simple\target”目录下:
简易注册中心
而我们打好的注册中心的包是在“dubbo-dubbo-2.5.3\dubbo-simple\dubbo-registry-simple\target”目录下: