关于kafka:Kafka源码阅读kafka源码导入idea老是报错实践

7次阅读

共计 2196 个字符,预计需要花费 6 分钟才能阅读完成。

环境

idea2020
jdk1.8
gradle3.5
scala2.11.8
zookeeper(单机集群都能够)
kafka-0.10.1

步骤

0.idea 提前设置

首先装置 scala 插件
idea 的设置外面左侧有一个“Plugins”,搜寻 scala 相干的插件,此时一开始是找不到的,而后点击“search in repositories”,找到一个“Scala”插件,他的类别是“Language”,在线装即可,他会下载之后装置。装置后如下图:

1. 克隆源码

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

拉取近程分支:

git fetch origin

切换到目标分支

git checkout -b 0.10.1 origin/0.10.1

这个时候切记不能先用 idea 间接关上我的项目!

2. 打包环境

kafka 自带了一些 Gradle 的 Task,能够生成出导入 Eclipse 或者 Idea 配置。
在 Kafka 目录下执行

gradle jar
gradle idea

这个时候目录下会呈现一个文件叫 kafka.ipr
在 finder 中双击这个文件,idea 会主动关上并导入我的项目。个别 Idea 关上会, 右下角会弹出一个框, 意思是: 咱们检测出这个是 Gradle 我的项目,须要导入 Gradle 的配置吗?
这个时候, 点击确认就行。

如果关上 Idea 啥也没产生,那么就须要咱们本人关上文件 build.gradle
注:也就是这个时候才会关上 Idea

3. 批改配置

3.1 gradle.build 文件

文件增加:

ScalaCompileOptions.metaClass.daemonServer = true
ScalaCompileOptions.metaClass.fork = true
ScalaCompileOptions.metaClass.useAnt = false
ScalaCompileOptions.metaClass.useCompileDaemon = false

3.2 创立文件

创立 log 目录和 data 目录
创立 resources 目录,将 config 下的 log4j.properties 文件放到 resources 目录下

3.3 批改文件

批改 config/server.properties 文件中的 ${kafka.logs.dir} 都改到新创建的 log 目录。
批改 config/server.properties 文件中 log.dirs 改为新创建的 data 目录。

4. 配置 gradle

注: 配置次 gradle 特地重要, 有时候咱们呈现的编译失败的问题很多时候是因为本地 gradle 配置问题, 比方:

* Where:
Build file 'D:\idePro\kafka0.1.0.1\kafka-0.10.1\kafka-0.10.1\build.gradle' line: 305

* What went wrong:
A problem occurred evaluating root project 'kafka-0.10.1'.
> Cannot set the value of read-only property 'additionalSourceDirs' for task ':jacocoRootReport' of type org.gradle.testing.jacoco.tasks.JacocoReport.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.5.1/userguide/command_line_interface.html#sec:command_line_warnings

5.kafka 主动编译

设置好下面步骤后,kafka 会依据本地的 gradle 进行主动编译。
导入的过程也须要不少的工夫,须要急躁期待,会显示的是如下的图:

最初导入胜利如下图:

6. 启动 kafka 配置

如果咱们要在 IntelliJ IDEA 里启动 kafka,通过源码的形式来启动。
此外,Kafka 的启动类是“kafka.Kafka”,他是要读取“server.properties”文件的,必须给他指定这个文件的所在位置才能够,在 idea 右上方的启动菜单栏里,有一个“Run”菜单,点击后,外面有一个“Edit Configuration”菜单,点击这个

呈现上图之后,抉择“+”号,而后抉择“Application”,“Name”输出为“Kafka”,“Main Class”输出为“kafka.Kafka”,“Program arguments”输出为“config/server.properties”,“use classpath of module”输出为“core_main”

正文完
 0