# Gradle plugin to verify a provider
Gradle plugin for verifying pacts against a provider.
The Gradle plugin creates a task `pactVerify` to your build which will verify all configured pacts against your provider.
__*Important Note: Any properties that need to be set when using the Gradle plugin need to be provided with `-P` and
not `-D` as with the other Pact-JVM modules!*__
## To Use It
### For Gradle versions 2.1+
```groovy
plugins {
id "au.com.dius.pact" version "4.3.10"
}
```
### For Gradle versions prior to 2.1 or if you can't access the Gradle plugin portal
#### 1.1. Add the gradle jar file to your build script class path:
```groovy
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'au.com.dius.pact.provider:gradle:4.3.10'
}
}
```
#### 1.2. Apply the pact plugin
```groovy
apply plugin: 'au.com.dius.pact'
```
### 2. Define the pacts between your consumers and providers
```groovy
pact {
serviceProviders {
// You can define as many as you need, but each must have a unique name
provider1 {
// All the provider properties are optional, and have sensible defaults (shown below)
protocol = 'http'
host = 'localhost'
port = 8080
path = '/'
// Again, you can define as many consumers for each provider as you need, but each must have a unique name
hasPactWith('consumer1') {
// currently supports a file path using file() or a URL using url()
pactSource = file('path/to/provider1-consumer1-pact.json')
}
// Or if you have many pact files in a directory
hasPactsWith('manyConsumers') {
// Will define a consumer for each pact file in the directory.
// Consumer name is read from contents of pact file
pactFileLocation = file('path/to/pacts')
}
}
}
}
```
### 3. Execute `gradle pactVerify`
# Project Properties
The following project properties can be specified with `-Pproperty=value` on the command line:
|Property|Description|
|--------|-----------|
|`pact.showStacktrace`|This turns on stacktrace printing for each request. It can help with diagnosing network errors|
|`pact.showFullDiff`|This turns on displaying the full diff of the expected versus actual bodies|
|`pact.filter.consumers`|Comma seperated list of consumer names to verify|
|`pact.filter.description`|Only verify interactions whose description match the provided regular expression|
|`pact.filter.providerState`|Only verify interactions whose provider state match the provided regular expression. An empty string matches interactions that have no state|
|`pact.filter.pacturl`|This filter allows just the just the changed pact specified in a webhook to be run. It should be used in conjunction with `pact.filter.consumers` |
|`pact.verifier.publishResults`|Publishing of verification results will be skipped unless this property is set to 'true'|
|`pact.verifier.ignoreNoConsumers`|If set to `true`, don't fail the build if there are no consumers to verify [4.1.19+]|
The following project properties must be specified as system properties:
| Property | Description |
|-----------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `pact.verifier.disableUrlPathDe