1.下载Nifi源码和程序

建议使用未修改的源码和程序,自行打包比较困难,并且很多库需要通过特殊的方法才能下载

这个文章过于古老,是从我很久前的博客上找到的,部分图片压根就找不到了,将就着看吧。或者也可以到csdn上看,不知道为啥给我设置了vip才能看...不是我干的!

https://blog.csdn.net/TineAine/article/details/120328983

Nifi 源码下载:各版本Nifi源码地址

Nifi 程序下载:各版本Nifi程序地址

Git下载指定版本源码:git clone --branch [tags标签] [git地址]

下载完成后解压Nifi程序到任意目录

2.修改并编译Nifi源码

IDEA直接打开Nifi源码根目录的Pom即可,开始可能会要求下载Maven依赖,(建议通过特殊方法下载,阿里云上的依赖库不全)然后添加一个Maven运行配置

修改Nifi.java 103和161行,将其注释(阻止Nifi监听心跳)

注意,仅在调试情况下注释掉,否则会造成其他问题

// 103
// bootstrapListener.start();
// 161
// bootstrapListener.sendStartedStatus(true);

点击跳过测试,避免不必要的错误

如果你使用的版本是Nifi 1.12.1,需要打开Nifi的根Pom文件,将其中的jdk 11修改为1.8:

修改前:

<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>

修改后:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

通过Maven面板,重新加载所有项目

3.复制目录并修改配置

复制Nifi执行程序根目录下的 binconflib源码根目录

按快捷键Ctrl + Alt + Shift打开项目结构面板,找到模块选项卡,选择其中的nifi-runtime模块

点击加号按钮,选择JAR或目录右侧为其添加conflib依赖

4.增加IDEA执行配置

添加一个IDEA 运行/调试配置,然后IDEA按下图进行配置

(第一次运行时,日志部分的配置是没有nifi-app.log那三个文件的,可以自行创建启动一次,让Nifi自己创建)

!!! 注意,如果使用Nifi 1.12.1进行编译,整个项目必须同时使用JDK 1.8,否则必然报错,无论是Nifi Maven根Pom还是项目指定,都必须是JDK1.8 !!!

其中,vm选项设置为(不要直接复制,先修改其中的<源码根目录>为你的源码根目录地址):

-Xmx512m -Xms512m -Djavax.security.auth.useSubjectCredsOnly=true -Djava.security.egd=file:/dev/urandom -Dsun.net.http.allowRestrictedHeaders=true -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -Djava.protocol.handler.pkgs=sun.net.www.protocol -Dzookeeper.admin.enableServer=false -Dnifi.properties.file.path=<源码根目录>\conf\nifi.properties -Dnifi.bootstrap.listen.port=61884 -Dapp=NiFi -Dorg.apache.nifi.bootstrap.config.log.dir=<源码根目录>\logs

5.调试Nifi

直接启动或通过调试模式启动即可,在IDEA里可以直接打断点进行调试

如果没有配置日志,第一次运行控制台是没有任何日志的,等待大概一到五分钟,通过浏览器即可打开Nifi界面