众所周知,要研究 Kafka,阅读 Kafka 源码是必不可少的环节。因此,本文将介绍如何使用 idea 加载 Kafka 源码并编译的具体步骤。由于 Kafka 核心模块是用 Scala 语言开发,用 Gradle 编译和构建的,因此下面先介绍相关环境的安装配置。
说明: 运行环境:windows 10 Kafka 版本:1.1.1 idea 版本:2020.03
kafka 1.1.1 源码下载地址:
https://github.com/apache/kafka/archive/refs/tags/1.1.1.tar.gz
如果下载缓慢,可使用该网站加速下载:https://shrill-pond-3e81.hunsh.workers.dev/
得到源码之后,最好执行下 git init
、git add .
、git commit "xxx"
命令,这样后续文件的变化,在 git 上都能追溯到。
1、Gradle
首先确认 Gradle 版本,打开 build.gradle 文件,发现 gradleVersion = "4.8.1"。
2、Scala
然后再确认 Scala 版本,打开 gradle.properties 文件,可以看到 scalaVersion 是 2.11.12 。
强烈建议先别用 idea 等工具打开项目!!!
maven { url 'https://maven.aliyun.com/repository/public' }
可以先用 Sublime 或 Notepad++ 来编译文件:
插件安装完,需要重启 idea 才能生效。
启动成功:
# 创建topic
.\bin\windows\kafka-topics.bat --create --zookeeper 192.168.62.66:2181/kafka1 --replication-factor 1 --partitions 1 --topic test
# 查看topic列表
.\bin\windows\kafka-topics.bat --list --zookeeper 192.168.62.66:2181/kafka1
解决办法:
编辑 build.gradle 文件,将 org.scoverage:gradle-scoverage:2.1.0 修改为 2.5.0
解决办法:
将 C:\Users\xxx\.gradle
目录删掉,重新加载项目,重新生成。
如果还不行,可参考:https://cloud.tencent.com/developer/article/1795283
解决办法:
在 build.gradle 文件中添加相关依赖(大约在594行):
project(':core') {
println "Building project 'core' with Scala version ${versions.scala}"
apply plugin: 'scala'
apply plugin: "org.scoverage"
archivesBaseName = "kafka_${versions.baseScala}"
dependencies {
...(省略)
// 添加以下两个依赖
// https://mvnrepository.com/artifact/org.slf4j/slf4j-api
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
// https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12
compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25'
}
解决。
执行 .\bin\windows\kafka-topics.bat 会报 kafka.admin.TopicCommand 错误。
不知道为什么,执行了一下 core 模块的 gradle build,虽然命令失败了,但是又试了试 .\bin\windows\kafka-topics.bat 发现执行正常了。
以上就是构建 Kafka 源码环境的所有步骤了。只有搭建好了 Kafka 的源码编译环境,你才能更方便地 debug 某一功能,梳理其中逻辑。
觉得本文写的不错,欢迎右下角点赞、在看、转发哟~
---------- END ----------