68 lines
1.9 KiB
Plaintext
68 lines
1.9 KiB
Plaintext
= Common contracts repo
|
|
|
|
This repo contains all contracts for apps in the system.
|
|
|
|
== As a consumer
|
|
|
|
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)
|
|
|
|
[source,bash]
|
|
----
|
|
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.
|
|
|
|
== As a producer
|
|
|
|
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:
|
|
|
|
[source,bash]
|
|
----
|
|
./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
|
|
|
|
[source,xml]
|
|
----
|
|
<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:
|
|
|
|
[source,groovy]
|
|
----
|
|
contracts {
|
|
testFramework ='Spock'
|
|
testMode = 'JaxRsClient'
|
|
baseClassForTests = 'org.springframework.cloud.MvcSpec'
|
|
stubsMode = 'LOCAL'
|
|
contractDependency {
|
|
stringNotation = "com.example:contracts"
|
|
}
|
|
}
|
|
---- |