Cucumber框架配置exec-maven-plugin执行类抛出ClassNotFoundException问题
问题根因
该错误的核心原因是exec-maven-plugin默认的类路径不包含测试源码编译后的类,且初始配置的执行阶段早于测试代码编译时机,即使调整到test-compile之后,未配置测试类路径依然会找不到类。
解决方案
按以下步骤修改插件配置即可:
- 调整执行阶段到
process-test-classes,该阶段测试代码已经完成编译,class文件已生成 - 在插件配置中添加
<classpathScope>test</classpathScope>,指定插件加载测试类路径下的资源和类 - 删除不必要的
includePluginDependencies配置(除非TestClass明确依赖该插件的内置依赖,否则该配置会引入冗余依赖冲突风险)
修改后的完整插件配置如下:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.0.0</version> <executions> <execution> <id>installAPK</id> <phase>process-test-classes</phase> <goals> <goal>java</goal> </goals> <configuration> <classpathScope>test</classpathScope> <mainClass>org.com.package1.TestClass</mainClass> </configuration> </execution> </executions> </plugin>
额外检查点
如果修改后仍报错,请确认TestClass.java确实存放在src/test/java/org/com/package1/路径下,类的包名声明和配置的mainClass完全一致,无拼写错误。
内容的提问来源于stack exchange,提问作者Mitsuhaki
相关产品推荐
相关产品推荐

