Maven项目已编译执行test命令仍重复编译如何解决?
解决Maven在GitHub Actions中并行测试重复编译的问题
问题原因
Maven的test生命周期阶段默认会触发其依赖的前置阶段(包括compile、test-compile等),哪怕你已经提前执行过test-compile,直接运行mvn test仍会重新执行这些前置步骤,导致重复编译。
两种解决方法
方法1:跳过编译相关阶段
在执行test命令时,添加参数跳过编译和测试编译阶段:
mvn -B -Dtest=${random-test-name} -DskipCompile=true -DskipTestCompile=true test
-DskipCompile=true:跳过主代码编译-DskipTestCompile=true:跳过测试代码编译(因为你已经执行过test-compile,测试类已经编译完成)
方法2:直接调用Surefire插件的test目标
不使用Maven的test生命周期阶段,而是直接调用Surefire插件的test目标,这样不会触发任何前置生命周期阶段:
mvn -B org.apache.maven.plugins:maven-surefire-plugin:3.2.5:test -Dtest=${random-test-name}
注意:替换命令中的
3.2.5为你项目中实际使用的Maven Surefire插件版本,避免版本不一致问题。
额外注意
确保GitHub Actions的各个步骤之间保留target目录,不要在步骤间执行清理工作目录的操作(GH Actions默认会保留工作目录状态,除非你显式清理)。
内容的提问来源于stack exchange,提问作者Lucky38i
相关产品推荐
相关产品推荐

