IntelliJ与Jenkins中Maven项目构建报StackOverflowError求助
Maven构建StackOverflowError问题排查与解决
问题现象
使用IntelliJ 2022.3.1构建Maven项目时抛出java.lang.StackOverflowError,升级IntelliJ版本后问题仍未解决,Jenkins构建也出现相同错误。错误栈中org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext重复出现500次,具体错误日志如下:
Exception in thread "main" java.lang.StackOverflowError at java.lang.ThreadLocal.get(ThreadLocal.java:161) at org.fusesource.jansi.Ansi.isEnabled(Ansi.java:172) at org.fusesource.jansi.Ansi.ansi(Ansi.java:192) at org.apache.maven.shared.utils.logging.AnsiMessageBuilder.<init>(AnsiMessageBuilder.java:45) at org.apache.maven.shared.utils.logging.MessageUtils.level(MessageUtils.java:163) at org.slf4j.impl.MavenSimpleLogger.renderLevel(MavenSimpleLogger.java:50) at org.slf4j.impl.SimpleLogger.log(SimpleLogger.java:277) at org.slf4j.impl.SimpleLogger.info(SimpleLogger.java:480) at org.apache.maven.cli.logging.Slf4jLogger.info(Slf4jLogger.java:59) at org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:464) at org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467) at org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467) // 以下重复500次相同行
解决方案
1. 锁定plexus-archiver依赖版本
该问题核心是依赖树中存在plexus-archiver版本冲突,导致归档逻辑出现无限递归:
- 执行命令查看依赖树中的版本分布:
mvn dependency:tree -Dincludes=org.codehaus.plexus:plexus-archiver - 在项目
pom.xml的dependencyManagement节点中统一锁定稳定版本(推荐3.7.0+):<dependencyManagement> <dependencies> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-archiver</artifactId> <version>3.8.0</version> </dependency> </dependencies> </dependencyManagement>
2. 清理构建缓存
- 本地环境:删除项目
target目录,以及本地Maven仓库中~/.m2/repository/org/codehaus/plexus/plexus-archiver文件夹,重新执行mvn clean install - Jenkins环境:构建前添加
clean步骤,清空工作区缓存后再执行构建
3. 检查归档插件配置
排查maven-assembly-plugin、maven-jar-plugin等插件的配置,确认是否存在循环包含目录的情况(例如将父目录递归包含进子归档包),这种配置会触发无限遍历导致栈溢出,修正为正确的目录包含规则。
内容的提问来源于stack exchange,提问作者akhila np
相关产品推荐
相关产品推荐

