dubbo2.5.6从下载到编译成功并且部署成功过程
1,下载dubbo
首先从 github 下载源代码并阅读 readme.md ,参考该文档,首先下载 opensesame,并编译:
$ git clone https://github.com/alibaba/opensesame.git (或者 git@github.com:alibaba/opensesame.git)
$ cd opensesame
$ mvn install
然后,下载 dubbo 并编译:
$ git clone https://github.com/alibaba/dubbo.git (或者 git@github.com:alibaba/dubbo.git)
$ cd dubbo
$ mvn clean install -Dmaven.test.skip
编译成功之后,生成 idea 相关配置文件:$ mvn idea:idea 接下来,将代码通过 maven 的方式导入到 idea ide 中
生成eclipse相关配置文件:$ mvn eclipse:eclipse 接下来,将代码通过 maven 的方式导入到 eclipse 中
如果顺利的话,到此结束。
2,clean install命令执行报错现象
但是很多人都会遇到各种各样的问题,尤其是新手小白对于首次接触dubbo这样大型的maven架构项目,和dubbo本身维护缓慢(有段时间停止维护),源码版本跟不上时代(比如spring版本过老)等问题,还是有必要把遇到的问题和解决方案写出来的。
比如我在执行命令: mvn clean install -Dmaven.test.skip 时就遇到这样的错误:
1 [INFO] ------------------------------------------------------------------------2 [INFO] Reactor Summary:3 [INFO] 4 [INFO] dubbo-parent ....................................... SUCCESS [ 1.053 s]5 [INFO] Hessian Lite(Alibaba embed version) ................ SUCCESS [ 5.029 s]6 [INFO] dubbo-common ....................................... FAILURE [ 0.816 s]7 [INFO] dubbo-container .................................... SKIPPED8 [INFO] dubbo-container-api ................................ SKIPPED9 [INFO] dubbo-container-spring ............................. SKIPPED 10 [INFO] dubbo-container-jetty .............................. SKIPPED 11 [INFO] dubbo-container-log4j .............................. SKIPPED 12 [INFO] dubbo-container-logback ............................ SKIPPED 13 [INFO] dubbo-remoting ..................................... SKIPPED 14 [INFO] dubbo-remoting-api ................................. SKIPPED 15 [INFO] dubbo-remoting-netty ............................... SKIPPED 16 [INFO] 省略后面其它项目...因为都是SKIPPED状态
看到上图的子模块编译顺序了吗?这就是dubbo整个系统里的模块依赖顺序,越是靠前,越是基础模块,越是其它模块所依赖的重要模块。
[INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 7.641 s [INFO] Finished at: 2017-10-21T15:29:08+08:00 [INFO] Final Memory: 20M/153M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project dubbo-common: Compilation failure -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException [ERROR] [ERROR] After correcting the problems, you can resume the build with the command [ERROR] mvn <goals> -rf :dubbo-common
可以看到执行到dubbo-common子模块时就编译失败了,后面其它子模块因为此失败全部被maven跳过执行。
3,clean install命令执行失败解决方案
install 失败的最终原因是我本地的org.javassist下的jar包坏掉了,我也不明白为什么由maven统一管理下,其中个别下载的jar包是坏的,不能用的……具体表现为:项目的Maven Dependencies目录下明明有这个javassist-3.20.0-GA.jar,但是在java源码文件里的import javassist.ClassPool; 一直编译报错,说明项目里并没有成功引用该jar,可是Maven Dependencies目录下的其它jar里的class确引用成功,那么原因只有一个:javassist-3.20.0-GA.jar坏掉了。解决方法:把maven库里的javassist包3.20.0 版本整个目录删掉,重新maven编译项目(项目右键 -> Maven Update)就OK。
4,编译子模块解决方案(大部分人死在不会自己成功编译dubbo上)
编译的最终目的:成功得到dubbo-admin.war,就算整个项目编译成功。
编译前把dubbo/pom.xml此文件里的JDK版本从1.6改为1.7:
<java_source_version>1.7</java_source_version> <java_target_version>1.7</java_target_version> <file_encoding>UTF-8</file_encoding>
然后把项目的face里的JDK改为1.7,有的还需要把eclipse里面的编译级别改成1.7。
编译任何一个子模块的解决方案相同,此处只列举一个子模块的maven项目在eclipse中导入例子。
在eclipse中Package Explorer空白处,右键 -> Import -> Maven -> Existing Maven Projects -> Maven Projects -> Browse按钮选择dubbo-remoting-api项目,相同操作再次选择dubbo-remoting-default项目,然后在Problems选项卡中可以看到很多的Errors信息,那是因为依赖子模块尚未编译通过。其它子模块导入方式相同。
1 [INFO] ------------------------------------------------------------------------2 [INFO] Reactor Summary:3 [INFO] 4 [INFO] dubbo-parent ....................................... SUCCESS [ 1.053 s]5 [INFO] Hessian Lite(Alibaba embed version) ................ SUCCESS [ 5.029 s]6 [INFO] dubbo-common ....................................... FAILURE [ 0.816 s]7 [INFO] dubbo-container .................................... SKIPPED8 [INFO] dubbo-container-api ................................ SKIPPED9 [INFO] dubbo-container-spring ............................. SKIPPED 10 [INFO] dubbo-container-jetty .............................. SKIPPED 11 [INFO] dubbo-container-log4j .............................. SKIPPED 12 [INFO] dubbo-container-logback ............................ SKIPPED 13 [INFO] dubbo-remoting ..................................... SKIPPED
最后只要按照此打印列表中把所有子模块顺序maven update一下,就可以得到正确的dubbo-admin.war。
5,部署dubbo-admin.war
把dubbo-admin.war复制到tomcat的webapp目录下,重命名为ROOT.war,删掉webapps下旧的所有项目,启动之后访问127.0.0.1:8080 即部署成功。
这里注意,如果你事先没有成功启动zookeeper,黑色的dos窗口会一直线程阻塞监听zookeeper 端口,直到zookeeper启动成功,才继续启动线程,然后才是war部署成功。
浏览器访问127.0.0.1:8080 会弹出一个登录窗口,默认是ROOT / ROOT
6,dubbo-admin部署验证成功
7,dubbo-demo测试成功
dubbo-demo中有3个子模块项目,分别分3此用导入maven项目形式导入到eclipse里,成为看上去的3个分开的项目,每个项目进行打包操作:项目右键 -> Run As -> Maven install ,可以看到在每个项目的target目录下各生成了一个自己项目名字命名的jar,表示这些项目编译成功。
顺序执行以下操作,测试demo:
1,启动zookeeper,默认监听2181端口。在windows下执行zookeeper-3.4.9\bin\zkServer.cmd,在linux下执行zkServer.sh
2,启动dubbo-admin。参考第5小节《部署dubbo-admin.war》
3,demo下的3个项目分别进行maven install操作生成3个jar包。
4,往zookeeper注册中心注册我们的应用程序,这是dubbo治理我们应用程序服务的关键!(也可以选择其它的注册中心)修改provider配置文件META-INF/spring/dubbo-demo-provider.xml和consumer配置文件META-INF/spring/dubbo-demo-consumer.xml,都进行以下操作:
注释掉:<!-- <dubbo:registry address="multicast://224.5.6.7:1234"/> -->
添加:<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
5,执行(provider提供者)main方法:dubbo\dubbo-demo\dubbo-demo-provider\src\main\java\com\alibaba\dubbo\demo\provider\Provider.java :
6,执行(consumer消费者)main方法:dubbo\dubbo-demo\dubbo-demo-consumer\src\main\java\com\alibaba\dubbo\demo\consumer\Consumer.java
消费者发送消息成功,服务提供者响应消息成功,demo测试成功。
服务者注册成功。
消费者注册成功。
转载于:https://www.cnblogs.com/liu2-/p/10759617.html
dubbo2.5.6从下载到编译成功并且部署成功过程相关推荐
- 【转】Android 4.3源码的下载和编译环境的安装及编译
原文网址:http://jingyan.baidu.com/article/c85b7a641200e0003bac95a3.html 告诉windows用户一个不好的消息,windows环境下没法 ...
- 第四章 源代码的下载和编译
Android移植主要就是Linux内核的移植,而Linux内核的移植主要是Linux驱动的移植.为了开发和测试Linux驱动,需在Ubuntu Linux下搭建两套开发环境:Android应用程序开 ...
- 【嵌入式】Libmodbus下载和编译详解
00. 目录 文章目录 00. 目录 01. Modbus开源库概述 02. Libmodbus下载 03. Libmodbus源码结构 04. Visual Studio2019编译Libmodbu ...
- Ubuntu 12.04(64位)下载并编译 Android 4.1 源码[只有2条命令]
2019独角兽企业重金招聘Python工程师标准>>> Ubuntu 12.04(64位)下载并编译 Android 4.1 源码[只有2条命令] ================= ...
- 手把手教你在Mac OS下载、编译及导入Android源码
1. 要求 1.1 硬件 160g可用磁盘空间. 笔者编译的是Android 9.0源码,下载下来后将近40g,编译后153g,所以至少需要160g可用磁盘空间. 看网上有别人下载编译7.1.1版本的 ...
- Android源码和内核源码的下载,编译和执行
笔者依据罗升阳老师的<Android 系统源码情景分析>一书,尝试下载,编译和执行Android源码和内核源码.但可能是软件源"被墙"或版本号更新的原因.期间遇到诸多问 ...
- android 例子源码_AOSP系列文章(一)-Android系统源码下载和编译
前期准备 从这里开始,我们就去做android系统的修改,相信会有更多的同学有更多的玩法. android是开源的,在源代码里没有秘密. 同学们可以去修改系统,做成自己喜欢的样子.做汽车的车机,到家里 ...
- 【转】在Ubuntu上下载、编译和安装Android最新源代码
原文网址:http://blog.csdn.net/luoshengyang/article/details/6559955 看完了前面说的几本书之后,对Linux Kernel和Android有一定 ...
- Ubuntu20.4环境下,Android11(R)源码,下载,编译,Pixel4刷机
Ubuntu20.04.2LTS 环境下,Android11(R)版本源码下载,编译,Pixel4刷机 前言:前段时间为了给Pixel4刷机,下载源码.编译.刷机,踩了无数个坑,也花了很多时间,在这里 ...
最新文章
- Numpy 对象和字符串相互转换
- python中使用zip函数基于两个列表数据list创建字典dict数据(Create a dictionary by passing the output of zip to dict)
- python需要php吗-学python需要学linux吗
- wxWidgets:wxRibbonButtonBar类用法
- MEncoder 使用实例
- vue调用数组_vue数组的运用
- FFmpeg源代码简单分析:avio_open2()
- 模块之序列化模块json
- 如何在知网直接下载PDF格式的硕博士论文
- php 连接局域网打印机,如何添加局域网打印机?局域网打印机添加方法介绍
- layer修改弹框标题样式
- Industry工业软件开发平台设计A-1
- EINT、DINT、ERTM、DRTM和INTM、DBGM解析
- 什么无线桥接一直正在链接服务器失败,无线桥接网络常见问题故障排除
- 听小S教你如何瘦小腿
- 描绘新十年智慧生活蓝图,AWE2021圆满闭幕
- 三度盈利,51Talk稳了吗?
- 文件未找到mathpage.wll_解决MathPage.wll文件找不到的问题(找了好久的良心之作)...
- 林轩田《机器学习基石》第一篇(观后感)
- 图数据库ONgDB Release v-1.0.0
热门文章
- ajax传输是用utf8,使用ajax时UTF8编码不起作用
- mysql connections参数_MySQL性能优化之max_connections配置参数浅析
- numpy 创建数组
- tf.io.gfile.glob 遍历文件
- Java 使用线程池ThreadPool:newFixedThreadPool
- LeetCode 3. Longest Substring Without Repeating Characters-- c++,java,python解法
- Linux中的无人职守安装脚本kickstart
- 计算机控制面板没有笔和触摸,如何通过注册表或者 命令 或者服务 关闭 控制面板笔和触摸里面的笔势操作(控制面板-笔和触摸-笔势) !急!...
- 手机app软件测试教程,手机app制作软件测试app的技巧和方式(上)
- docker部署Redis6-0-6