阅读kafka源码:gradle build kafka的问题

333 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

关于Kafka版本选择

这里使用的Kafka的版本是0.10.1版本,我们主要分析的Kafka的核心源码流程,对于这个来说变化不是很大。同时我们选择分析老版本的一个原因是:老一点的版本代码结构会更清晰,因为像这种开源的项目,很多人都会去提交一些patch,但是提交patch的开发人员水平参差不齐,所以就会让新的版本代码看起来很混乱,不便于研究学习。同时我们可以在源码中学到一些可以提升代码能力的架构设计。阅读kafka源码,首先需要把源码下载下来。

克隆源码

git clone https://github.com/apache/kafka.git

拉取远程分支:

git fetch origin

切换到目的分支

git checkout -b 0.10.1 origin/0.10.1

kafka-0.10.1.0是通过Gradle来构建依赖的,在我们build环境依赖时,会遇到下面的问题。

构建项目

从一个问题入手,完成对gradle的下载,环境配置,以及IDEA中使用gradle build kafka源码的配置。

下面是完整的报错:

Build file 'F:\mycode\kafka-0.10.1.0-src\build.gradle' line: 297 A problem occurred evaluating root project 'kafka-0.10.1.0-src'.Cannot set the value of read-only property 'additionalSourceDirs' for task ':jacocoRootReport' of type org.gradle.testing.jacoco.tasks.JacocoReport.

这个问题是gradle的build版本问题,我是在build kafka的老版本时报的错,这个问题我查了一遍网上的内容,发现很多博客忽略了IDEA settings关于gradle的build的一个配置。

解决步骤:

1、首先打开项目的build.gradle文件,查看gradle的版本。

001.png

2、下载对应版本的gradle 下载地址:gradle.org/releases/

解压放到想要的安装目录,配置环境变量

002 [2].png

003.png

3、然后在IDEA中的settings——>Build,Execution,Deployment——>Gradle中,配置IDEA中的build工具的gradle,主要是gradle User home和Use Gradle From 中的修改

004.png

注意:上面的配置成gradle的目录,第一个是配置的Home目录,相当于是一个全局Home配置,而下面Gradle Projects下的 Use Gradle from 则一定也需要配置成Specified location,这样此项目配置的gradle目录才会使用刚才上面配置的gradle的Home目录的配置。