问题背景:
运行testng,失败,跟踪到原始的出错为:
because of exception org.spockframework.util.IncompatibleGroovyVersionException: The Spock compiler plugin cannot execute because Spock 0.7.0-groovy-2.0 is not compatible with Groovy 1.8.6. For more information, see http://versioninfo.spockframework.org
尝试解决的办法:
1. 在testng工程的jar中删除groovy-all-1.8.6.jar,尝试无效,重新运行仍然报一样的错误
2. 根据出错信息,应该是版本相互不兼容导致的
在工程中搜索“groovy”,发现有个业务子工程的pom文件中用到了spock,配置如下
<dependency> <groupId>org.spockframework</groupId> <artifactId>spock-core</artifactId> <version>0.7-groovy-2.0</version> <scope>test</scope> </dependency>
直觉是版本号太高。于是在http://grepcode.com/snapshot/repo1.maven.org/maven2/org.spockframework/spock-core/0.7-groovy-2.0/
中发现了spock和groovy的兼容关系
解决办法:
将spock依赖的版本号改低一点,兼容Groovy 1.8.6即可
<dependency> <groupId>org.spockframework</groupId> <artifactId>spock-core</artifactId> <version>0.7-groovy-1.8</version> <scope>test</scope> </dependency>