如何使用Groovy DSL在多个契约间共享通用代码?
契约DSL共享Groovy代码的问题与解决方案
我尝试在多个Spring Cloud Contract契约间共享通用Groovy代码,将Groovy文件放入契约文件夹后导入时,出现如下编译错误:
[ERROR] Exception occurred while trying to evaluate the contract at path [SNIP] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: file.groovy: 2: unable to resolve class Foo @ line 2, column 1. import Foo ^ 1 error at org.codehaus.groovy.control.ErrorCollector.failIfErrors (ErrorCollector.java:292) at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation (CompilationUnit.java:910) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations (CompilationUnit.java:692) at org.codehaus.groovy.control.CompilationUnit.compile (CompilationUnit.java:666) at groovy.lang.GroovyClassLoader.doParseClass (GroovyClassLoader.java:373) at groovy.lang.GroovyClassLoader.lambda$parseClass$2 (GroovyClassLoader.java:316) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute (StampedCommonCache.java:163) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut (StampedCommonCache.java:154) at groovy.lang.GroovyClassLoader.parseClass (GroovyClassLoader.java:314) at groovy.lang.GroovyShell.parseClass (GroovyShell.java:572) at groovy.lang.GroovyShell.parse (GroovyShell.java:585) at groovy.lang.GroovyShell.parse (GroovyShell.java:597) at groovy.lang.GroovyShell.evaluate (GroovyShell.java:459) at groovy.lang.GroovyShell.evaluate (GroovyShell.java:504) at org.springframework.cloud.contract.verifier.util.ContractVerifierDslConverter.toObject (ContractVerifierDslConverter.java:157)
问题
是否可以直接从当前项目的契约DSL中共享Groovy代码?
解决方案
无法直接通过契约文件夹内的Groovy文件实现代码共享,可行的方法是将通用代码打包为Jar包,添加到spring-cloud-contract-maven-plugin的类路径中:
<plugin> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-contract-maven-plugin</artifactId> <dependencies> <dependency> <groupId>com.example</groupId> <artifactId>my-stuff</artifactId> <version>1.0.0</version> </dependency> </dependencies> </plugin>
通过这种方式即可导入Jar包中的类,实现契约间的代码共享。
内容的提问来源于stack exchange,提问作者Jakub Bochenski
相关产品推荐
相关产品推荐

