This repo contains all contracts for apps in the system.
You are working offline in order to play around with the API of the producer. What you need to do is to have the producer’s stubs installed locally. To do that you have to (from the root of the repo)
cd com/example/server/
mvn clean install -DskipTests
Then if you do ls ./target
you’ll see server-0.0.1-SNAPSHOT-stubs.jar
. This jar will
contain the stubs generated from your contracts. That way you
can reference the com.example:server:+:stubs
dependency in your consumer tests.
Assuming that the consumers have filed a PR with the proposed contract the producers can work offline to generate tests and stubs. To work offline, as a producer you just have to go to the root folder of the contracts and:
./mvnw clean install -DskipTests
Then if you do ls ./target
you’ll see contracts-0.0.1-SNAPSHOT.jar
. This file contains
all DSL contracts, for all applications.
Now the producer can include the contracts-0.0.1-SNAPSHOT.jar
from your local maven repository.
You can achieve that by setting the proper flag in plugin properties.
Example for Maven
<plugin>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-contract-maven-plugin</artifactId>
<configuration>
<contractsMode>LOCAL</contractsMode>
<contractDependency>
<groupId>com.example.standalone</groupId>
<artifactId>contracts</artifactId>
</contractDependency>
</configuration>
</plugin>
and for Gradle:
contracts {
testFramework ='Spock'
testMode = 'JaxRsClient'
baseClassForTests = 'org.springframework.cloud.MvcSpec'
stubsMode = 'LOCAL'
contractDependency {
stringNotation = "com.example:contracts"
}
}