Files
spring-cloud-contract/samples/standalone/contracts
Marcin Grzejszczak 6402e14f3c Added support for Stub Runner and Pact Broker
fixes gh-191
commit 533f1d3d0e8f6dcd37677bfef555fc2ea86bc1b1
Author: Tim Ysewyn <Tim.Ysewyn@me.com>
Date:   Wed Mar 7 15:56:48 2018 +0100

    Upgraded pact-jvm-model to 3.5.13
2018-04-02 22:50:40 +02:00
..
2016-09-23 10:16:51 +02:00
2016-09-23 10:16:51 +02:00
2016-09-23 10:16:51 +02:00
2016-09-23 10:16:51 +02:00
2017-01-30 11:47:27 +01:00
2018-02-16 16:05:54 +01:00

= 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 {
    targetFramework = 'Spock'
    testMode = 'JaxRsClient'
    baseClassForTests = 'org.springframework.cloud.MvcSpec'
    stubsMode = 'LOCAL'
    contractDependency {
        stringNotation = "com.example:contracts"
    }
}
----