有些项目虽然在Idea里执行spock单元测试时一切正常,但通过maven执行或在公司内部一些CICD系统中运行spock的单测时可能会遇到以下异常:
Execution default of goal org.codehaus.gmavenplus:gmavenplus-plugin:1.6:compileTests failed
或者是这种异常:
Unable to determine Groovy version
这两种错误一般都是项目中引入的 gmavenplus-plugin
插件版本和groovy
或groovy-all
版本不一致导致的,如果说你项目中的groovy版本比较低:
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.12</version>
<scope>test</scope>
</dependency>
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<goals>
<goal>compileTests</goal>
</goals>
</execution>
</executions>
</plugin>
像本系列文章中示例代码使用的groovy都是2.5.4
,对应的gmavenplus-plugin
可以使用1.6
版本的,但如果是2.4.12
的groovy
,可能识别不到1.6
的gmavenplus编译插件,需要降到 1.5 或 1.4
改成如下配置即可(注意1.5
之前的<goal>
名字为testCompile
)
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.12</version>
<scope>test</scope>
</dependency>
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
然后记得本地执行下 mvn clean test
命令,确保单测执行成功(第一次需要这样操作下,后面就不需要)
如果你的项目中依赖的底层pom也引入了spock和groovy,不方便排除的话,也可以直接使用,只要mvn clean test
能通过即可。
除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/2755.html
暂无评论