* Attempt to keep Kotlin totally off the classpath * Add version header for new class * Fix a few bugs with the samples and provide better debugging output for javaexec * Use main consistently * Fix Gradle's published pom and use maven-publish plugin consistently throughout plugin and samples * Re-add groovydoc jar * Have assemble create the groovydoc jar * Switch to publishToMavenLocal * Sync dependencies with pom.xml and fix null provider for Gradle versions less than 6.2 * Perform quoting conditionally for Windows only * Add jsch, aether, and shaded libraries to round out compatibility * Ensure contract tests are generated before kotlin compile task
124 lines
3.2 KiB
Groovy
124 lines
3.2 KiB
Groovy
plugins {
|
|
id "groovy"
|
|
id "org.springframework.boot"
|
|
id "io.spring.dependency-management"
|
|
id "org.springframework.cloud.contract"
|
|
id "maven-publish"
|
|
}
|
|
|
|
group = 'com.example'
|
|
version = '0.0.1'
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
mavenLocal()
|
|
maven { url "https://repo.spring.io/snapshot" }
|
|
maven { url "https://repo.spring.io/milestone" }
|
|
maven { url "https://repo.spring.io/release" }
|
|
}
|
|
|
|
dependencyManagement {
|
|
imports {
|
|
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${BOM_VERSION}"
|
|
mavenBom "org.springframework.cloud:spring-cloud-contract-dependencies:${verifierVersion}"
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation("org.springframework.boot:spring-boot-starter-web")
|
|
implementation("org.springframework.boot:spring-boot-starter-actuator")
|
|
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml")
|
|
|
|
testImplementation('org.springframework.boot:spring-boot-starter-test')
|
|
testImplementation 'org.springframework.cloud:spring-cloud-starter-contract-stub-runner'
|
|
// tag::dependencies[]
|
|
testImplementation 'org.springframework.cloud:spring-cloud-starter-contract-verifier'
|
|
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
|
|
// end::dependencies[]
|
|
}
|
|
|
|
contracts {
|
|
baseClassMappings {
|
|
baseClassMapping('.*standalone.*', 'com.example.fraud.FraudBaseWithStandaloneSetup')
|
|
baseClassMapping('.*webapp.*', 'com.example.fraud.FraudBaseWithWebAppSetup')
|
|
}
|
|
}
|
|
|
|
generateClientStubs.enabled = false
|
|
|
|
test {
|
|
useJUnitPlatform()
|
|
systemProperty 'spring.profiles.active', 'gradle'
|
|
testLogging {
|
|
exceptionFormat = 'full'
|
|
}
|
|
afterSuite { desc, result ->
|
|
if (!desc.parent) {
|
|
println "Results: (${result.testCount} tests, ${result.successfulTestCount} successes, ${result.failedTestCount} failures, ${result.skippedTestCount} skipped)"
|
|
if (result.testCount == 0) {
|
|
throw new IllegalStateException("No tests were found. Failing the build")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task stubsJar(type: Jar, dependsOn: ['copySnippets', 'copySources', 'copyClasses']) {
|
|
baseName = project.name
|
|
classifier = 'stubs'
|
|
from project.file("${project.buildDir}/stubs")
|
|
}
|
|
|
|
task copySnippets(type: Copy, dependsOn: test) {
|
|
from "target/snippets/stubs"
|
|
into "${project.buildDir}/stubs/META-INF/${project.group}/${project.name}/${project.version}/mappings"
|
|
}
|
|
|
|
task copySources(type: Copy) {
|
|
from "src/main/java"
|
|
include '**/model/Fraud*.*'
|
|
into "${project.buildDir}/stubs/"
|
|
}
|
|
|
|
task copyClasses(type: Copy) {
|
|
from "${project.buildDir}/classes/main/"
|
|
include '**/model/Fraud*.*'
|
|
into "${project.buildDir}/stubs/"
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
maven(MavenPublication) {
|
|
artifact bootJar
|
|
artifact stubsJar
|
|
|
|
// https://github.com/spring-gradle-plugins/dependency-management-plugin/issues/273
|
|
versionMapping {
|
|
usage("java-api") {
|
|
fromResolutionOf("runtimeClasspath")
|
|
}
|
|
usage("java-runtime") {
|
|
fromResolutionResult()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
clean.doFirst {
|
|
delete 'target/snippets/stubs'
|
|
delete "~/.m2/repository/com/example/http-server-restdocs-gradle"
|
|
}
|
|
|
|
task resolveDependencies {
|
|
doLast {
|
|
project.rootProject.allprojects.each { subProject ->
|
|
subProject.buildscript.configurations.each { configuration ->
|
|
configuration.resolve()
|
|
}
|
|
subProject.configurations.each { configuration ->
|
|
configuration.resolve()
|
|
}
|
|
}
|
|
}
|
|
}
|