SpringCloud 生产者
2023-12-07 16:42 更新
对于生产者,要使用SCM方法,我们可以重用与外部合同相同的机制。我们通过包含git://
协议的URL路由Spring Cloud Contract以使用SCM实现。
您必须在Maven中手动添加
pushStubsToScm
目标,或者在Gradle中执行(绑定)pushStubsToScm
任务。我们不会开箱即用将存根推送到您的git存储库的origin
。
Maven.
<plugin> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-contract-maven-plugin</artifactId> <version>${spring-cloud-contract.version}</version> <extensions>true</extensions> <configuration> <!-- Base class mappings etc. --> <!-- We want to pick contracts from a Git repository --> <contractsRepositoryUrl>git://https://github.com/spring-cloud-samples/spring-cloud-contract-nodejs-contracts-git.git</contractsRepositoryUrl> <!-- We reuse the contract dependency section to set up the path to the folder that contains the contract definitions. In our case the path will be /groupId/artifactId/version/contracts --> <contractDependency> <groupId>${project.groupId}</groupId> <artifactId>${project.artifactId}</artifactId> <version>${project.version}</version> </contractDependency> <!-- The contracts mode can't be classpath --> <contractsMode>REMOTE</contractsMode> </configuration> <executions> <execution> <phase>package</phase> <goals> <!-- By default we will not push the stubs back to SCM, you have to explicitly add it as a goal --> <goal>pushStubsToScm</goal> </goals> </execution> </executions> </plugin>
Gradle.
contracts { // We want to pick contracts from a Git repository contractDependency { stringNotation = "${project.group}:${project.name}:${project.version}" } /* We reuse the contract dependency section to set up the path to the folder that contains the contract definitions. In our case the path will be /groupId/artifactId/version/contracts */ contractRepository { repositoryUrl = "git://https://github.com/spring-cloud-samples/spring-cloud-contract-nodejs-contracts-git.git" } // The mode can't be classpath contractsMode = "REMOTE" // Base class mappings etc. } /* In this scenario we want to publish stubs to SCM whenever the `publish` task is executed */ publish.dependsOn("publishStubsToScm")
通过这样的设置:
- Git项目将被克隆到一个临时目录
- SCM存根下载器将转到
META-INF/groupId/artifactId/version/contracts
文件夹以查找合同。例如,对于com.example:foo:1.0.0
,路径为META-INF/com.example/foo/1.0.0/contracts
- 将根据合同生成测试
- 将根据合同创建存根
- 测试通过后,存根将在克隆的存储库中提交
- 最后,将推动该存储库的
origin
以上内容是否对您有帮助:
更多建议: