groovy编译问题
-
我遇到这个问题时的场景:
我写好的Spock的测试用例,然后我在本地执行"mvn clean test -U"(强制执行清除和测试命令),这时写好的测试用例执行不到,但是我用maven的工具有的时候就能执行成功,主要问题就在这里,下面分解一下:- 有时使用maven的test工具***可以***执行成功:
可以成功的原因是因为,你提前执行过编写好的测试用例,这样在你执行的时候测试用例被编译了,所以可以执行 - 有时使用maven的test工具***不可以***执行成功:
你在执行test前先去执行clean,这是编译文件全部都清理干净了,然后去使用compile工具,这是编译的文件只有src/main/java里的文件,然后执行test工具,这次执行没有执行到你的测试用例,原因是:test工具现在只能编译并执行src/test下的“.java”类,这时“.groovy”类没有被编译,这时找到了问题所在,就是执行test时,groovy类没有被编译
- 有时使用maven的test工具***可以***执行成功:
-
引发问题的原因:
执mvn test时候,只能编译并执行src/test下的“.java”类,这时“.groovy”类没有被编译 -
解决问题:
引入groovy编译插件,使java和groovy可以进行混合编译
//groovy的依赖
//groovy核心
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.1</version>
</dependency>
//支持执行compile时groovy和java文件的混编插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<compilerId>groovy-eclipse-compiler</compilerId>
<verbose>true</verbose>
<source>1.8</source>
<target>1.8</target>
</configuration>
<!--groovy文件编译-->
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>2.9.2-01</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-api</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-batch</artifactId>
<version>2.4.3-01</version>
</dependency>
</dependencies>
</plugin>