每个消费者使用 gradle 从合约回购生成存根

Generate stubs from contract repo by each consumer using gradle

Spring 在 maven 中提供了一个示例,它可以通过在各自的目录中放置一个 pom.xml 来为每个生产者服务生成存根。

Link to example

我如何使用 gradle 使用下面的文件结构来执行此操作,我只想为 api1 构建存根?

src/
  main/
   resources/
     contracts/
       api1/
         consumer1/
           rest
         consumer2/
           rest
       api2/
         consumer1/
           rest

更新: 刚刚发现我可以在@AutoConfigureStubRunner 中指定消费者名称,所以现在我只需要能够根据每个 API 和 gradle.

生成存根
@AutoConfigureStubRunner(workOffline = true,
    ids = "com.example:beer-api-producer-with-stubs-per-consumer",
    stubsPerConsumer = true,
    consumerName = "bar-consumer")

您必须使用 Gradle 中的 jar 任务。 https://github.com/spring-cloud-samples/spring-cloud-contract-samples/blob/master/producer_with_restdocs/build.gradle 这里有一个例子。

您修改路径就足够了,它应该可以工作。示例如下:

task stubsJar(type: Jar) {
    into("/") {
        include('**/*.groovy')
        from("${project.rootDir}/src/main/resources/contracts")
    }
}