含wro4j Maven插件的Maven项目打包时出现Mockito兼容错误
解决wro4j-maven-plugin执行时Mockito API兼容错误的方案
问题根源
这个空指针错误是因为wro4j-maven-plugin依赖的Mockito版本和你项目中引入的Mockito版本不兼容,导致Mockito内部的PluginRegistry无法初始化,进而触发调用空对象方法的异常。
具体解决步骤
1. 先排查插件依赖的Mockito版本
执行Maven命令查看pet-clinic-web模块中wro4j插件依赖的Mockito版本:
mvn dependency:tree -Dverbose -Dincludes=org.mockito:mockito-core -pl pet-clinic-web
通过输出结果对比插件自带的Mockito版本和你项目中使用的版本是否一致。
2. 统一版本或排除冲突依赖
有两种处理方式,选其一即可:
方式一:统一项目Mockito版本
在父pom的<dependencyManagement>节点中添加统一的Mockito版本配置,强制插件使用项目的版本:<dependencyManagement> <dependencies> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>你的项目当前使用的版本号</version> </dependency> </dependencies> </dependencyManagement>方式二:排除插件自带的冲突依赖
在pet-clinic-web模块的wro4j插件配置中,直接指定要使用的Mockito版本,覆盖插件自带的依赖:<plugin> <groupId>ro.isdc.wro4j</groupId> <artifactId>wro4j-maven-plugin</artifactId> <version>你当前使用的wro4j插件版本</version> <executions> <execution> <phase>generate-resources</phase> <goals> <goal>run</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>你的项目当前使用的版本号</version> </dependency> </dependencies> </plugin>
3. 验证并重新打包
修改配置后,执行打包命令测试:
mvn clean package -pl pet-clinic-web
如果还是报错,可以尝试把wro4j-maven-plugin升级到最新稳定版本,新版本通常会修复这类依赖兼容问题。
4. 临时应急方案
如果以上方法暂时无法解决,可以拆分执行步骤:
- 保留插件的
<executions>注释,先手动执行wro4j生成资源:mvn wro4j:run -pl pet-clinic-web - 资源生成完成后,再执行打包命令,这样既能拿到预期资源,又能避开打包阶段的依赖冲突。
内容的提问来源于stack exchange,提问作者Rather not say
相关产品推荐
相关产品推荐

