76 lines
2.9 KiB
Plaintext
76 lines
2.9 KiB
Plaintext
[[contract-kotlin]]
|
|
== Contract DSL in Kotlin
|
|
|
|
include::partial$_attributes.adoc[]
|
|
|
|
To get started with writing contracts in Kotlin, you need to start with a (newly created) Kotlin Script file (`.kts`).
|
|
As with the Java DSL, you can put your contracts in any directory of your choice.
|
|
By default, the Maven plugin will look at the `src/test/resources/contracts` directory and Gradle plugin will
|
|
look at the `src/contractTest/resources/contracts` directory.
|
|
|
|
NOTE: Since 3.0.0, the Gradle plugin will also look at the legacy
|
|
directory `src/test/resources/contracts` for migration purposes. When contracts are found in this directory, a warning
|
|
will be logged during your build.
|
|
|
|
You need to explicitly pass the `spring-cloud-contract-spec-kotlin` dependency to your project plugin setup.
|
|
The following example (in both Maven and Gradle) shows how to do so:
|
|
|
|
====
|
|
[source,xml,indent=0,subs="verbatim",role="primary"]
|
|
.Maven
|
|
----
|
|
<plugin>
|
|
<groupId>org.springframework.cloud</groupId>
|
|
<artifactId>spring-cloud-contract-maven-plugin</artifactId>
|
|
<version>${spring-cloud-contract.version}</version>
|
|
<extensions>true</extensions>
|
|
<configuration>
|
|
<!-- some config -->
|
|
</configuration>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.springframework.cloud</groupId>
|
|
<artifactId>spring-cloud-contract-spec-kotlin</artifactId>
|
|
<version>${spring-cloud-contract.version}</version>
|
|
</dependency>
|
|
</dependencies>
|
|
</plugin>
|
|
|
|
<dependencies>
|
|
<!-- Remember to add this for the DSL support in the IDE and on the consumer side -->
|
|
<dependency>
|
|
<groupId>org.springframework.cloud</groupId>
|
|
<artifactId>spring-cloud-contract-spec-kotlin</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
----
|
|
|
|
[source,groovy,indent=0,subs="verbatim",role="secondary"]
|
|
.Gradle
|
|
----
|
|
buildscript {
|
|
repositories {
|
|
// ...
|
|
}
|
|
dependencies {
|
|
classpath "org.springframework.cloud:spring-cloud-contract-gradle-plugin:$\{scContractVersion}"
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
// ...
|
|
|
|
// Remember to add this for the DSL support in the IDE and on the consumer side
|
|
testImplementation "org.springframework.cloud:spring-cloud-contract-spec-kotlin"
|
|
// Kotlin versions are very particular down to the patch version. The <kotlin_version> needs to be the same as you have imported for your project.
|
|
testImplementation "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:<kotlin_version>"
|
|
}
|
|
----
|
|
====
|
|
|
|
IMPORTANT: Remember that, inside the Kotlin Script file, you have to provide the fully qualified name to the `ContractDSL` class.
|
|
Generally you would use its contract function as follows: `org.springframework.cloud.contract.spec.ContractDsl.contract { ... }`.
|
|
You can also provide an import to the `contract` function (`import org.springframework.cloud.contract.spec.ContractDsl.Companion.contract`) and then call `contract { ... }`.
|
|
|