dubbo源码学习(1)---从github检出源码到本地并进行maven构建

1 篇文章 0 订阅
1 篇文章 0 订阅

     本人打算学习下dubbo源码,虽然看了很多多线程、jdk集合类,尤其是设计在并发场景下使用的相关集合类的源码,总感觉理论的学习,尤其是看书,理解层次有限,且无法与实践中结合起来,学习效率比较低。因此,打算研究下dubbo的源码,一方面本人所在的公司,也会使用分布式服务的调用,研究下最新的RPC分布式调用框架,可考虑对现有业务系统进行升级改造,另一方面本人一向对java底层原理比较感兴趣,也看了jvm相关的不少书籍,总是感觉无法与具体的工程项目结合起来。

     首先,当然是访问dubbo的github官方网站(访问apche官网也可以点击链接跳转过去),然后git clone下来源码,到本地目录,可以参考官方手册操作

      http://dubbo.apache.org/books/dubbo-dev-book/build.html

     接着,按说明进行maven构建,

  mvn clean install

     本人的maven版本为3.3.9,jdk版本为jdk1.7.0_17

     很不幸的,运行上面的构建命令后,即报错:

C:\Java\dubbo>set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.7.0_17


C:\Java\dubbo>set JRE_HOME=C:\Program Files (x86)\Java\jdk1.7.0_17\jre
[WARNING]
[WARNING] Some problems were encountered while building the effective settings
[WARNING] Expected root element 'settings' but found 'mirrors' (position: START_TAG seen <mirrors>... @1:9)  @ C:\Users\macpro\.m2\settings.xml, line 1, column 9
[WARNING]
[INFO] Scanning for projects...
Downloading: https://repo.maven.apache.org/maven2/org/springframework/spring-framework-bom/4.3.16.RELEASE/spring-framework-bom-4.3.16.RELEASE.pom
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] Non-resolvable import POM: Could not transfer artifact org.springframework:spring-framework-bom:pom:4.3.16.RELEASE from/to central (https://repo.maven.apache.org/maven2): Received fatal alert: protocol_version @ org.apache.dubbo:dubbo-dependencies-bom:2.7.0-SNAPSHOT, C:\Java\dubbo\dependenci
es-bom\pom.xml, line 120, column 25
 @
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR]   The project org.apache.dubbo:dubbo-parent:2.7.0-SNAPSHOT (C:\Java\dubbo\pom.xml) has 1 error
[ERROR]     Non-resolvable import POM: Could not transfer artifact org.springframework:spring-framework-bom:pom:4.3.16.RELEASE from/to central (https://repo.maven.apache.org/maven2): Received fatal alert: protocol_version @ org.apache.dubbo:dubbo-dependencies-bom:2.7.0-SNAPSHOT, C:\Java\dubbo\depend
encies-bom\pom.xml, line 120, column 25 -> [Help 2]
[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/ProjectBuildingException

[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException

    在百度相关错误信息后,也无法定位具体问题,因此打开maven命令的debug选项,输出详细的构建信息,定位错误原因:

mvn -X clean install

    可以在输出的日志,错误位置的下方不远处看到java ssl相关的错误输出,且我的本机maven配置了自定义的镜像地址,在输出的日志中,显示也是https访问的方式,那么初步判断是我自己配置的镜像地址是https方式,没有处理证书问题,所以无法访问。

    由于配置maven https证书(也就是证书导入到jdk中),比较繁琐,因此我直接修改镜像地址,指向国内http源地址。

    参考https://www.cnblogs.com/libingbin/p/5949483.html

    把上述帖子的setting.xml文件内容直接拷贝过来,修改下里面本地maven仓库的绝对目录。

    接着运行maven构建命令,还是把debug选项打开,以防再次出现问题时快速定位。

    果然,又出现了问题,由于打开了maven debug选项,输出日志较多,有1万多行,初步查看日志,发现从远程仓库下载maven的jar包到本地仓库基本没有问题,之后报错了,如下

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.0:compile (default-compile) on project dubbo-common: Compilation failure

[ERROR] javac: ϞЧքĿҪעѐѦ: 1.8

    一看这个,好像是maven对应的jdk1.7,虽然对于maven3.3.9来说没问题,但是对于工程中使用到的其他jar包,可能有问题,必须要求jdk1.8,故更新jdk再试。此处我的处理方法是从其他安装了jdk1.8的机器拷贝jdk目录过来到本地,并在maven的启用的bat脚本中添加jdk设置,更新为jdk1.8。

    从新运行构建,看到屏幕也有些输出错误,但是构建过程还是继续在往下走,先忽略错误,看能不能出来最终的结果。

    在如下位置,卡住了,准确来说,是正在执行这个步骤,想起来官方说明文档一开始建议加大maven的内存,没有设置,对于我此等码农的破电脑,只能等待,期望不要oom了。

    [INFO] Building jar: C:\Java\dubbo\dubbo-common\target\dubbo-common-2.7.0-SNAPSHOT-sources.jar

    等了几分钟,很不幸的,最后还是输出了错误,没有构建成功,如下图


    细看日志,大部分都是单元测试部分报错,想起来官方文档的建议,跳过单元测试构建

mvn install -Dmaven.test.skip
     最终终于输出了成功信息。

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12:36 min
[INFO] Finished at: 2018-07-03T08:41:37+08:00
[INFO] Final Memory: 62M/310M

[INFO] ------------------------------------------------------------------------

    查看本地仓库目录C:\Users\macpro\.m2\repository\org\apache\dubbo 中,点开dubbo各模块目录,进入目录最底层,查看大部分项目都生产了jar包文件,有些项目未生成jar包文件,原因未知,但是不影响。

总结:

   由于本人对maven操作细节和原理了解得不是很深入,所以构建过程出了问题需要自己分析日志定位原因,花费了比较长时间。

下一步,就是构建eclipse工程,并导入到eclipse中,构建含源码的调试环境,调试官方demo项目,跟踪调用逻辑并学习分析了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值