最近在学习Doris FE源码,按照Doris官网开发者手册下载源码时,出现了很多问题,比如Jar包无法加载、编译项目报错、Thrift 插件无法引用等等,导致卡壳时间太久,所以总结如下经验分享给大家,避免大家在同样问题花大量时间去解决。
Apache Doris官方文档:
https://doris.apache.org/zh-CN/developer-guide/fe-idea-dev.html#_4-%E8%AE%BE%E7%BD%AE%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F
Doris官网提供多种方式编译,Idea、Eclipse、Vscode
等等,下面我们采用Idea
来运行源码。
我们可以通过GitHub或者Idea VCS两种方式下载源码。
(1)GitHub下载源码 Doris GitHub 链接:https://github.com/apache/incubator-doris
源码下载完成之后,把源码解压到Idea的workspace即可。
(2)Idea VCS下载源码
Doris Git地址:https://github.com/apache/incubator-doris.git
等待Idea从GitHub获取完整代码。
在Mac终端输入命令:brew info Thrift@0.13.0
(PS:如果没有安装brew命令,可以自行百度如何安装)
❝安装
thrift
0.13.0 版本(注意:Doris
0.15 以上 和最新的版本基于thrift
0.13.0 构建, 之前的版本依然使用thrift
0.9.3 构建) ❞
输入命令:brew install thrift@0.13.0
❝注:MacOS执行
brew install thrift@0.13.0
可能会报找不到版本的错误,解决方法如下,在终端执行:
brew tap-new $USER/local-tap
brew extract --version='0.13.0' thrift $USER/local-tap
brew install thrift@0.13.0
「注:留意Thrift安装的位置!!!!」
❞
输入命令:thrift -version
(1)Idea打开Doris源码,等待Maven加载pom文件依赖
❝注:我这是使用的是IDEA默认的maven仓库,很多JAR包都加载不出来。 ❞
(2)将Thrift文件复制到Doris源码目录下的thirdparty文件夹
cp /usr/local/Cellar/thrift\@0.13.0/0.13.0/bin/thrift /Users/apple/Workspaces/Doris源码_1.0.0/thirdparty/installed/bin/
❝左上角 IntelliJ IDEA ==> Perferences ❞
❝设置doris.thrift变量值 ❞
(2)系统环境配置
sudo vi ~/.bash_profile
source ~/.bash_profile
Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.6:sign (sign-release-artifacts) on project fe-common: Unable to execute gpg command: Error while executing process. Cannot run program "gpg": error=2, No such file or directory -> [Help 1]
「解决方式」:在fe-common.pom加入org.apache.maven.plugins依赖:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
如果出现该报错:
Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.6:sign (sign-release-artifacts) on project fe-common: Unable to execute gpg command: Error while executing process. Cannot run program "gpg": error=2, No such file or directory -> [Help 1]
在spark-dpp.pom 文件添加 org.apache.maven.plugins
依赖:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
「编译fe项目的目的是生成 fe-core target文件,不能直接编译fe-core,因为fe-core依赖fe部分文件,所以我们需要先编译fe项目」
变量设置:
JAVA_OPTS=-Xmx1024m;
DORIS_HOME=/Users/apple/Workspaces/Doris源码_1.0.0;
PID_DIR=/Users/apple/Workspaces/Doris源码_1.0.0/fe;
LOG_DIR=/Users/apple/Workspaces/Doris源码_1.0.0/fe/logs
使用IDEA编译Apache Doris FE源码过程中,出现了很多报错,我进行了总结:
Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.6:sign (sign-release-artifacts) on project fe-common: Unable to execute gpg command: Error while executing process. Cannot run program "gpg": error=2, No such file or directory -> [Help 1]
❝解决方式:缺少maven-gpg-plugin依赖,在pom文件添加即可,配置文件如下: ❞
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
Unable to find: checkstyle-apache-header.txt
❝解决方式:checkstyle-apache-header.txt文件的路径不对,如下 图: ❞
thrift did not exit cleanly. Review output for more information.
❝解决方式:thrift文件的路径不对,请看Maven环境配置章节! ❞
Module 'fe-core' production : java.lang.OutOfMemoryError: GC overhead limit exceeded
❝解决方式:Maven的编译器内存不够,添加内存即可,如图 ❞