Jenkins执行Maven构建生成Jar失败问题求助
我来帮你一步步排查并解决这个构建问题,从报错信息和你的pom.xml来看,主要有两个核心问题需要处理:
一、修复pom.xml中的重复依赖
首先看报错里的警告信息:
'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.springframework.boot:spring-boot-configuration-processor:jar -> duplicate declaration of version
你的pom.xml里确实重复添加了spring-boot-configuration-processor依赖,找到下面两段代码,删除其中一段即可:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
这个重复依赖虽然只是警告,但可能间接影响构建稳定性,先把它修复。
二、解决maven-clean-plugin的PluginResolutionException
报错的核心问题是Maven无法解析maven-clean-plugin:3.0.0,附带的子错误Invalid packaging for parent POM org.apache.maven:maven-parent:27, must be "pom" but is "jar",这通常是本地Maven仓库缓存损坏或者仓库配置问题导致的,按以下步骤处理:
步骤1:清理本地Maven仓库的损坏缓存
找到你的Maven本地仓库路径(默认是~/.m2/repository,Windows系统是C:\Users\<你的用户名>\.m2\repository),删除以下两个目录:org/apache/maven/plugins/maven-clean-plugin/3.0.0org/apache/maven/maven-parent/27
这两个目录的缓存文件已经损坏,删除后让Maven重新下载正确的依赖包。
步骤2:强制更新依赖重新构建
修改Jenkins里的构建命令,把原来的:mvn clean package -DskipTests改成:
mvn clean package -DskipTests -U-U参数会强制Maven更新所有快照依赖和插件,避免使用本地缓存的损坏文件。步骤3:检查Jenkins的Maven配置(可选)
如果上面两步没解决问题,确认Jenkins使用的Maven版本和配置是否正确:- 确保Jenkins指向的Maven
settings.xml配置了可用的远程仓库(比如国内镜像或者官方Maven仓库) - 检查Jenkins的Maven安装路径是否正确,没有使用损坏的Maven版本
- 确保Jenkins指向的Maven
额外优化建议
你的pom.xml里使用的maven-assembly-plugin版本是2.2-beta-5,这个版本非常老旧,建议升级到稳定版本(比如3.3.0),避免潜在的兼容性问题:
<plugin> <artifactId>maven-assembly-plugin</artifactId> <version>3.3.0</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.capiot.ckyc.CkycApplication</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>assemble-all</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
按照上述步骤操作后,重新执行构建任务,应该就能成功生成CKYC-0.0.1-SNAPSHOT.jar文件了。
内容的提问来源于stack exchange,提问作者user11270902

