如何在Maven 3.6.0中消除执行mvn javadoc:jar时下载的含漏洞log4j-1.2.12?
消除Maven javadoc:jar自动下载log4j-1.2.12.jar的方案
1. 显式升级maven-javadoc-plugin版本
maven-javadoc-plugin是Maven的内置绑定插件,执行javadoc:jar时会自动启用,其旧版(2.x系列)依赖存在漏洞的log4j-1.2.12。在项目pom.xml中显式配置3.4.0及以上版本的插件即可解决——新版已替换为安全的SLF4J+Logback日志组件:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.4.0</version> </plugin> </plugins> </build>
若需临时排除旧版log4j依赖,可在插件的dependencies节点添加规则:
<dependencies> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> <exclusions> <exclusion> <groupId>*</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
2. 全局配置覆盖默认插件版本
修改Maven全局settings.xml(路径通常为~/.m2/settings.xml或Maven安装目录下的conf/settings.xml),通过pluginManagement统一指定插件版本,无需逐个项目修改:
<profiles> <profile> <id>secure-javadoc-plugin</id> <activeByDefault>true</activeByDefault> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.4.0</version> </plugin> </plugins> </pluginManagement> </profile> </profiles>
3. 拦截旧版log4j的下载
先删除本地仓库中~/.m2/repository/log4j/log4j/1.2.12目录,再在settings.xml中添加镜像规则阻止该版本下载:
<mirrors> <mirror> <id>block-vulnerable-log4j</id> <mirrorOf>log4j:log4j:1.2.12</mirrorOf> <url>https://repo.maven.apache.org/maven2</url> <blocked>true</blocked> </mirror> </mirrors>
注意:此方法需配合前两种方案使用,否则可能导致javadoc插件执行失败。
内容的提问来源于stack exchange,提问作者user1610446
相关产品推荐
相关产品推荐

