每个消费者使用 gradle 从合约回购生成存根
Generate stubs from contract repo by each consumer using gradle
Spring 在 maven 中提供了一个示例,它可以通过在各自的目录中放置一个 pom.xml 来为每个生产者服务生成存根。
我如何使用 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")
}
}
Spring 在 maven 中提供了一个示例,它可以通过在各自的目录中放置一个 pom.xml 来为每个生产者服务生成存根。
我如何使用 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")
}
}