Maven自己不支持其余JVM语言(例如Groovy或Scala)。要在Maven项目中使用它,须要使用第三方插件。对于Groovy而言,最好的选择彷佛是GMavenPlus(重写再也不维护的GMaven插件)。另外一种选择是容许使用Groovy-Eclipse编译器和Maven 的插件,可是它没有使用官方的插件,groovyc而且在过去,使用Groovy 的新发行版/功能存在一些问题。java
GMavenPlus插件的示例配置以下所示:spring
<plugin> <groupId>org.codehaus.gmavenplus</groupId> <artifactId>gmavenplus-plugin</artifactId> <version>1.4</version> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions> </plugin>
因为咱们要用Spock编写测试,所以建议使用Spec附加后缀(从规范中命名)来命名文件,所以须要告诉Surefire 在这些文件中也查找测试:编程
<plugin> <artifactId>maven-surefire-plugin</artifactId> <version>${surefire.version}</version> <configuration> <includes> <include>**/*Spec.java</include> <!-- Yes, .java extension --> <include>**/*Test.java</include> <!-- Just in case of having also "normal" JUnit tests --> </includes> </configuration> </plugin>
值得留意的是,咱们须要包括**/*Spec.java不**/*Spec.groovy
让它工做。app
最后必须添加依赖项:框架
<dependencies> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>2.4.1</version> </dependency> <dependency> <groupId>org.spockframework</groupId> <artifactId>spock-core</artifactId> <version>1.0-groovy-2.4</version> <scope>test</scope> </dependency> </dependencies>
正确使用Spock版本很是重要。对于Groovy 2.4,须要版本1.0-groovy-2.4。对于Groovy 2.3版本1.0-groovy-2.3。若是发生错误,Spock会发出清晰的错误消息以示抗议:maven
Could not instantiate global transform class org.spockframework.compiler.SpockTransform specified at jar:file:/home/foo/.../spock-core-1.0-groovy-2.3.jar!/META-INF/services/org.codehaus.groovy.transform.ASTTransformation because of exception org.spockframework.util.IncompatibleGroovyVersionException: The Spock compiler plugin cannot execute because Spock 1.0.0-groovy-2.3 is not compatible with Groovy 2.4.0. For more information, see http://versioninfo.spockframework.org
连同其余必需的pom.xml元素,文件大小增长到了50行以上的XML。仅对于Groovy和Spock而言。让咱们看看Gradle中有多么复杂。工具
Gradle具备对Groovy和Scala的内置支持。事不宜迟,Groovy插件只须要应用便可。性能
apply plugin: 'groovy'
测试
接下来必须添加依赖项:ui
compile 'org.codehaus.groovy:groovy-all:2.4.1' testCompile 'org.spockframework:spock-core:1.0-groovy-2.4'
以及Gradle在哪里寻找他们的信息:
repositories { mavenCentral() }
连同定义包组和版本一块儿,在基于Groovy的DSL中花费了15行代码。
我用的Gradle
testCompile group: 'org.spockframework', name: 'spock-core', version: '1.3-groovy-2.5' testCompile group: 'org.spockframework', name: 'spock-spring', version: '1.3-groovy-2.5' testCompile group: 'org.springframework', name: 'spring-test', version: '5.1.9.RELEASE'
得益于对Groovy的嵌入式支持和紧凑的DSL Gradle,它是开始使用Spock(一般是Groovy)的首选解决方案。可是,若是您在GMavenPlus(和XML)的帮助下更喜欢Apache Maven,也能够构建使用Spock测试的项目。