You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自定义构建NiFi 1.8.0以升级Log4j至安全版本

NiFi 1.8.0 升级Log4j版本方案

1. 根pom.xml强制指定安全版本

NiFi的NAR依赖分散在各子模块,需在根目录pom.xml的<dependencyManagement>节点中添加Log4j安全版本配置,强制覆盖所有子模块的旧依赖:

<dependencyManagement>
  <dependencies>
    <!-- 强制Log4j 2.x核心组件版本为2.17.0 -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.17.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.17.0</version>
    </dependency>
    <!-- 适配SLF4J的桥接包,注意SLF4J版本需和该包兼容,建议将org.slf4j.version改回1.7.36(安全兼容版),避免2.0.x版本的冲突问题 -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <version>2.17.0</version>
    </dependency>
    <!-- 替换Log4j 1.x,用桥接包兼容旧代码调用 -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-1.2-api</artifactId>
      <version>2.17.0</version>
    </dependency>
  </dependencies>
</dependencyManagement>

2. 排除子模块的旧版依赖

针对明确依赖旧Log4j的模块(比如nifi-elasticsearch-client-service-nar),在其模块pom.xml的依赖中排除旧版Log4j,避免依赖传递:

<dependency>
  <groupId>org.elasticsearch.client</groupId>
  <artifactId>elasticsearch-rest-high-level-client</artifactId>
  <version><!-- 保持原版本 --></version>
  <exclusions>
    <exclusion>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
    </exclusion>
    <exclusion>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
    </exclusion>
  </exclusions>
</dependency>

3. 构建后验证

执行mvn clean install -DskipTests构建完成后,解压目标NAR包,检查NAR-INF/bundled-dependencies/目录,确认:

  • log4j-core、log4j-api等核心包版本为2.17.0
  • 无log4j-1.x系列jar包(已被log4j-1.2-api-2.17.0替代)

4. 临时应急方案(构建受阻时)

若重新构建有困难,可直接修改已部署的NAR包:

  1. 找到/nifi/work/nar/extensions/下的目标NAR解压目录
  2. 删除旧版log4j-core-2.8.2.jar、log4j-core-2.9.1.jar及所有log4j-1.x.jar
  3. 放入log4j-core-2.17.0.jar、log4j-api-2.17.0.jar、log4j-1.2-api-2.17.0.jar
  4. 重启NiFi生效

注意:此方式需确保版本兼容,且NiFi重启后若NAR被重新解压,需重复操作,仅作为临时应急用。

内容的提问来源于stack exchange,提问作者Jin Ma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 11:52:15