使用 IntelliJ IDEA 搭建 FE 开发环境
1.环境准备
JDK1.8+, IntelliJ IDEA
- 从 <https://github.com/apache/incubator-doris.git> 下载源码到本地
- 使用IntelliJ IDEA 打开代码根目录
- 如果仅进行fe开发而没有编译过thirdparty,则需要安装thrift,并将thrift 复制或者连接到
thirdparty/installed/bin目录下
``
1. 安装thrift0.13.0 版本(注意:Doris0.15 和最新的版本基于thrift0.13.0 构建, 之前的版本依然使用thrift` 0.9.3 构建)
- Windows:
-
- 下载:
http://archive.apache.org/dist/thrift/0.13.0/thrift-0.13.0.exe
- 下载:
-
- 拷贝:将文件拷贝至
./thirdparty/installed/bin
- 拷贝:将文件拷贝至
-
MacOS:
-
- 下载:
brew install thrift@0.13.0
- 下载:
-
- 建立软链接:
mkdir -p ./thirdparty/installed/bin-
ln -s /opt/homebrew/Cellar/thrift@0.13.0/0.13.0/bin/thrift ./thirdparty/installed/bin/thrift -
注: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
- 参考链接:
https://gist.github.com/tonydeng/02e571f273d6cce4230dc8d5f394493c``` - 如果是Mac 或者 Linux 环境 可以通过 如下命令生成自动生成代码:
1. cd fe
2. mvn generate-sources
如果出现错误,则执行:
1. cd fe && mvn clean install -DskipTests
或者通过图形界面运行 maven 命令生成

如果使用windows环境可能会有make命令和sh脚本无法执行的情况 可以通过拷贝linux上的 fe/fe-core/target/generated-sources 目录拷贝到相应的目录的方式实现,也可以通过docker 镜像挂载本地目录之后,在docker 内部生成自动生成代码,可以参照编译一节
2.调试
- 用idea导入fe工程
- 在fe目录下创建下面红框标出的目录(在新版本中该目录可能存在,如存在则跳过,否则创建)

- 编译
ui项目,将ui/dist/目录中的文件拷贝到webroot中(如果你不需要看DorisUI,这一步可以跳过)
3.配置conf/fe.conf
下面是我自己的配置,你可以根据自己的需要进行修改
1. # Licensed to the Apache Software Foundation (ASF) under one
2. # or more contributor license agreements. See the NOTICE file
3. # distributed with this work for additional information
4. # regarding copyright ownership. The ASF licenses this file
5. # to you under the Apache License, Version 2.0 (the
6. # "License"); you may not use this file except in compliance
7. # with the License. You may obtain a copy of the License at
8. #
9. # http://www.apache.org/licenses/LICENSE-2.0
10. #
11. # Unless required by applicable law or agreed to in writing,
12. # software distributed under the License is distributed on an
13. # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14. # KIND, either express or implied. See the License for the
15. # specific language governing permissions and limitations
16. # under the License.
18. #####################################################################
19. ## The uppercase properties are read and exported by bin/start_fe.sh.
20. ## To see all Frontend configurations,
21. ## see fe/src/org/apache/doris/common/Config.java
22. #####################################################################
24. # the output dir of stderr and stdout
25. LOG_DIR = ${DORIS_HOME}/log
27. DATE = `date +%Y%m%d-%H%M%S`
28. JAVA_OPTS="-Xmx2048m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$DORIS_HOME/log/fe.gc.log.$DATE"
30. # For jdk 9+, this JAVA_OPTS will be used as default JVM options
31. JAVA_OPTS_FOR_JDK_9="-Xmx4096m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xlog:gc*:$DORIS_HOME/log/fe.gc.log.$DATE:time"
33. ##
34. ## the lowercase properties are read by main program.
35. ##
37. # INFO, WARN, ERROR, FATAL
38. sys_log_level = INFO
40. # store metadata, create it if it is not exist.
41. # Default value is ${DORIS_HOME}/doris-meta
42. # meta_dir = ${DORIS_HOME}/doris-meta
44. http_port = 8030
45. rpc_port = 9020
46. query_port = 9030
47. edit_log_port = 9010
48. mysql_service_nio_enabled = true
50. # Choose one if there are more than one ip except loopback address.
51. # Note that there should at most one ip match this list.
52. # If no ip match this rule, will choose one randomly.
53. # use CIDR format, e.g. 10.10.10.0/24
54. # Default value is empty.
55. # priority_networks = 10.10.10.0/24;192.168.0.0/16
57. # Advanced configurations
58. # log_roll_size_mb = 1024
59. # sys_log_dir = ${DORIS_HOME}/log
60. # sys_log_roll_num = 10
61. # sys_log_verbose_modules =
62. # audit_log_dir = ${DORIS_HOME}/log
63. # audit_log_modules = slow_query, query
64. # audit_log_roll_num = 10
65. # meta_delay_toleration_second = 10
66. # qe_max_connection = 1024
67. # max_conn_per_user = 100
68. # qe_query_timeout_second = 300
69. # qe_slow_log_ms = 5000
4.设置环境变量
在IDEA中设置运行环境变量

5.启动fe
下面你就可以愉快的启动,调试你的FE了
