diff --git a/docs/src/main/asciidoc/README.adoc b/docs/src/main/asciidoc/README.adoc index 1a31f6af8e..cc85698563 100644 --- a/docs/src/main/asciidoc/README.adoc +++ b/docs/src/main/asciidoc/README.adoc @@ -8,6 +8,8 @@ include::introduction.adoc[] +include::links.adoc[] + == Documentation You can read more about Spring Cloud Contract Verifier by reading the {documentation_url}[docs] diff --git a/docs/src/main/asciidoc/links.adoc b/docs/src/main/asciidoc/links.adoc new file mode 100644 index 0000000000..e8e1df762b --- /dev/null +++ b/docs/src/main/asciidoc/links.adoc @@ -0,0 +1,11 @@ +== Links + +Here you can find interesting links related to Spring Cloud Contract Verifier: + +- https://github.com/Codearte/accurest[Spring Cloud Contract Verifier Github Repository] +- http://codearte.github.io/accurest[Spring Cloud Contract Verifier Documentation] +- http://codearte.github.io/accurest/deprecated[Accurest Legacy Documentation] +- https://codearte.github.io/accurest/#spring-cloud-contract-stub-runner[Spring Cloud Contract Stub Runner Documentation] +- http://codearte.github.io/accurest/#stub-runner-for-messaging[Spring Cloud Contract Stub Runner Messaging Documentation] +- https://gitter.im/Codearte/accurest[Spring Cloud Contract Verifier Gitter] +- https://github.com/Codearte/accurest-maven-plugin[Spring Cloud Contract Verifier Maven Plugin] diff --git a/docs/src/main/asciidoc/spring-cloud-contract-verifier.adoc b/docs/src/main/asciidoc/spring-cloud-contract-verifier.adoc index 859cd12fc2..96cc64d927 100644 --- a/docs/src/main/asciidoc/spring-cloud-contract-verifier.adoc +++ b/docs/src/main/asciidoc/spring-cloud-contract-verifier.adoc @@ -17,4 +17,6 @@ include::messaging.adoc[] include::stubrunner.adoc[] -include::stubrunner_msg.adoc[] \ No newline at end of file +include::stubrunner_msg.adoc[] + +include::links.adoc[] \ No newline at end of file diff --git a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-converters/src/main/groovy/org/springframework/cloud/contract/verifier/wiremock/RecursiveFilesConverter.groovy b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-converters/src/main/groovy/org/springframework/cloud/contract/verifier/wiremock/RecursiveFilesConverter.groovy index 8cc1c372d4..a8a9db6688 100644 --- a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-converters/src/main/groovy/org/springframework/cloud/contract/verifier/wiremock/RecursiveFilesConverter.groovy +++ b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-converters/src/main/groovy/org/springframework/cloud/contract/verifier/wiremock/RecursiveFilesConverter.groovy @@ -28,7 +28,6 @@ import java.nio.charset.StandardCharsets import java.nio.file.Files import java.nio.file.Path import java.nio.file.Paths -import java.nio.file.StandardCopyOption /** * Recursively converts contracts into their stub representations * @@ -38,21 +37,26 @@ import java.nio.file.StandardCopyOption @CompileStatic class RecursiveFilesConverter { - private static final String DEFAULT_CONTRACTS_FOLDER = "contracts" - private static final String DEFAULT_MAPPINGS_FOLDER = "mappings" private final SingleFileConverter singleFileConverter private final ContractVerifierConfigProperties properties + private final String additionalFolder RecursiveFilesConverter(SingleFileConverter singleFileConverter, ContractVerifierConfigProperties properties) { this.properties = properties this.singleFileConverter = singleFileConverter + this.additionalFolder = "" + } + + RecursiveFilesConverter(SingleFileConverter singleFileConverter, ContractVerifierConfigProperties properties, String additionalFolder) { + this.properties = properties + this.singleFileConverter = singleFileConverter + this.additionalFolder = additionalFolder } void processFiles() { ContractFileScanner scanner = new ContractFileScanner(properties.contractsDslDir, properties.excludedFiles as Set, [] as Set) ListMultimap contracts = scanner.findContracts() log.debug("Found the following contracts $contracts") - createContractDirInOutputStubsFolder() contracts.asMap().entrySet().each { entry -> entry.value.each { ContractMetadata contract -> File sourceFile = contract.path.toFile() @@ -60,13 +64,11 @@ class RecursiveFilesConverter { if (!singleFileConverter.canHandleFileName(sourceFile.name)) { return } - Path targetContractDir = createAndReturnTargetDirectory(sourceFile, DEFAULT_CONTRACTS_FOLDER) - Files.copy(sourceFile.toPath(), new File(targetContractDir.toFile(), sourceFile.name).toPath(), StandardCopyOption.REPLACE_EXISTING) String convertedContent = singleFileConverter.convertContent(entry.key.last().toString(), contract) if (!convertedContent) { return } - Path absoluteTargetPath = createAndReturnTargetDirectory(sourceFile, DEFAULT_MAPPINGS_FOLDER) + Path absoluteTargetPath = createAndReturnTargetDirectory(sourceFile) File newJsonFile = createTargetFileWithProperName(absoluteTargetPath, sourceFile) newJsonFile.setText(convertedContent, StandardCharsets.UTF_8.toString()) } catch (Exception e) { @@ -76,17 +78,10 @@ class RecursiveFilesConverter { } } - private boolean createContractDirInOutputStubsFolder() { - return contractDir().mkdirs() - } - - private File contractDir() { - return new File(properties.stubsOutputDir, DEFAULT_CONTRACTS_FOLDER) - } - - private Path createAndReturnTargetDirectory(File sourceFile, String defaultFolder) { + private Path createAndReturnTargetDirectory(File sourceFile) { Path relativePath = Paths.get(properties.contractsDslDir.toURI()).relativize(sourceFile.parentFile.toPath()) - Path absoluteTargetPath = new File(properties.stubsOutputDir, defaultFolder).toPath().resolve(relativePath) + File rootFile = additionalFolder ? new File(properties.stubsOutputDir, additionalFolder) : properties.stubsOutputDir + Path absoluteTargetPath = rootFile.toPath().resolve(relativePath) Files.createDirectories(absoluteTargetPath) return absoluteTargetPath } diff --git a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/RecursiveFilesConverterSpec.groovy b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/RecursiveFilesConverterSpec.groovy index 6e58c029f2..0e3de65413 100755 --- a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/RecursiveFilesConverterSpec.groovy +++ b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/RecursiveFilesConverterSpec.groovy @@ -30,12 +30,7 @@ import java.nio.file.Paths class RecursiveFilesConverterSpec extends Specification { private static - final Set EXPECTED_TARGET_FILES = [ - Paths.get("contracts/dir1/dsl1.groovy"), Paths.get("contracts/dir1/dsl1b.groovy"), - Paths.get("contracts/dir2/dsl2.groovy"), Paths.get("contracts/dslRoot.groovy"), - Paths.get("mappings/dslRoot.json"), Paths.get("mappings/dir1/dsl1.json"), - Paths.get("mappings/dir1/dsl1b.json"), Paths.get("mappings/dir2/dsl2.json") - ] + final Set EXPECTED_TARGET_FILES = [Paths.get("dslRoot.json"), Paths.get("dir1/dsl1.json"), Paths.get("dir1/dsl1b.json"), Paths.get("dir2/dsl2.json")] @Rule public TemporaryFolder tmpFolder = new TemporaryFolder(); @@ -84,8 +79,7 @@ class RecursiveFilesConverterSpec extends Specification { then: Collection createdFiles = FileUtils.listFiles(properties.stubsOutputDir, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE) Set relativizedCreatedFiles = getRelativePathsForFilesInDirectory(createdFiles, properties.stubsOutputDir) - [ Paths.get("mappings/dslRoot.json"), Paths.get("mappings/dir2/dsl2.json") , - Paths.get("contracts/dslRoot.groovy"), Paths.get("contracts/dir2/dsl2.groovy")] as Set == relativizedCreatedFiles as Set + [Paths.get("dslRoot.json"), Paths.get("dir2/dsl2.json")] as Set == relativizedCreatedFiles as Set and: createdFiles.each { it.text == "converted" } } diff --git a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-core/src/main/groovy/org/springframework/cloud/contract/verifier/config/ContractVerifierConfigProperties.groovy b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-core/src/main/groovy/org/springframework/cloud/contract/verifier/config/ContractVerifierConfigProperties.groovy index 58b81803a4..2e38d50db6 100644 --- a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-core/src/main/groovy/org/springframework/cloud/contract/verifier/config/ContractVerifierConfigProperties.groovy +++ b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-core/src/main/groovy/org/springframework/cloud/contract/verifier/config/ContractVerifierConfigProperties.groovy @@ -91,4 +91,9 @@ class ContractVerifierConfigProperties { */ File stubsOutputDir + /** + * Suffix for the generated Stubs Jar task + */ + String stubsSuffix = 'stubs' + } diff --git a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/GenerateWireMockClientStubsFromDslTask.groovy b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/GenerateWireMockClientStubsFromDslTask.groovy index e8f565eb46..6b960510e7 100644 --- a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/GenerateWireMockClientStubsFromDslTask.groovy +++ b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/GenerateWireMockClientStubsFromDslTask.groovy @@ -32,6 +32,8 @@ import org.springframework.cloud.contract.verifier.wiremock.RecursiveFilesConver */ class GenerateWireMockClientStubsFromDslTask extends ConventionTask { + private static final String DEFAULT_MAPPINGS_FOLDER = 'mappings' + @InputDirectory File contractsDslDir @OutputDirectory @@ -43,7 +45,8 @@ class GenerateWireMockClientStubsFromDslTask extends ConventionTask { void generate() { logger.info("Spring Cloud Contract Verifier Plugin: Invoking DSL to WireMock client stubs conversion") logger.debug("From '${getContractsDslDir()}' to '${getStubsOutputDir()}'") - RecursiveFilesConverter converter = new RecursiveFilesConverter(new DslToWireMockClientConverter(), getConfigProperties()) + RecursiveFilesConverter converter = new RecursiveFilesConverter(new DslToWireMockClientConverter(), + getConfigProperties(), DEFAULT_MAPPINGS_FOLDER) converter.processFiles() } } diff --git a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/SpringCloudContractVerifierGradlePlugin.groovy b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/SpringCloudContractVerifierGradlePlugin.groovy index ff6d2a06f5..1d176070cc 100644 --- a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/SpringCloudContractVerifierGradlePlugin.groovy +++ b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/SpringCloudContractVerifierGradlePlugin.groovy @@ -19,8 +19,11 @@ package org.springframework.cloud.contract.verifier.plugin import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.Task +import org.gradle.api.publish.maven.MavenPublication +import org.gradle.api.publish.maven.plugins.MavenPublishPlugin +import org.gradle.api.tasks.Copy +import org.gradle.jvm.tasks.Jar import org.springframework.cloud.contract.verifier.config.ContractVerifierConfigProperties - /** * Gradle plugin for Spring Cloud Contract Verifier that from the DSL contract can *
    @@ -44,6 +47,8 @@ class SpringCloudContractVerifierGradlePlugin implements Plugin { private static final String GENERATE_SERVER_TESTS_TASK_NAME = 'generateContractTests' private static final String DSL_TO_WIREMOCK_CLIENT_TASK_NAME = 'generateWireMockClientStubs' + private static final String COPY_CONTRACTS_TASK_NAME = 'copyContracts' + private static final String VERIFIER_STUBS_JAR_TASK_NAME = 'verifierStubsJar' private static final Class IDEA_PLUGIN_CLASS = org.gradle.plugins.ide.idea.IdeaPlugin private static final String GROUP_NAME = "Verification" @@ -61,6 +66,9 @@ class SpringCloudContractVerifierGradlePlugin implements Plugin { setConfigurationDefaults(extension) createGenerateTestsTask(extension) createAndConfigureGenerateWireMockClientStubsFromDslTask(extension) + Task stubsJar = createAndConfigureStubsJarTasks(extension) + createAndConfigureCopyContractsTask(stubsJar, extension) + createAndConfigureMavenPublishPlugin(stubsJar, extension) project.dependencies.add("testCompile", "com.github.tomakehurst:wiremock:2.0.10-beta") project.dependencies.add("testCompile", "com.toomuchcoding.jsonassert:jsonassert:0.4.7") project.dependencies.add("testCompile", "org.assertj:assertj-core:2.3.0") @@ -111,4 +119,85 @@ class SpringCloudContractVerifierGradlePlugin implements Plugin { configProperties = { extension } } } + + private Task createAndConfigureStubsJarTasks(ContractVerifierConfigProperties extension) { + Task task = stubsTask() + if (task) { + project.logger.warn("Stubs jar task was present - won't create one. Remember about adding it to artifacts as an archive!") + return task + } else { + task = project.tasks.create(type: Jar, name: VERIFIER_STUBS_JAR_TASK_NAME, + dependsOn: DSL_TO_WIREMOCK_CLIENT_TASK_NAME) { + baseName = project.name + classifier = extension.stubsSuffix + from { extension.stubsOutputDir } + } + task.description = "Creates the stubs JAR task" + task.group = GROUP_NAME + + project.artifacts { + archives task + } + return task + } + } + + private Task stubsTask() { + try { + return project.tasks.getByName(VERIFIER_STUBS_JAR_TASK_NAME) + } catch (Exception e) { + return null + } + } + + private Task createAndConfigureCopyContractsTask(Task stubs, ContractVerifierConfigProperties extension) { + Task task = project.tasks.create(type: Copy, name: COPY_CONTRACTS_TASK_NAME) { + from { extension.contractsDslDir } + into { project.file("${extension.stubsOutputDir}/contracts") ?: project.file("${project.buildDir}/stubs/contracts") } + } + task.description = "Copies contracts to the output folder" + task.group = GROUP_NAME + stubs.dependsOn task + return task + } + + private void createAndConfigureMavenPublishPlugin(Task stubsTask, ContractVerifierConfigProperties extension) { + if (!classIsOnClasspath("org.gradle.api.publish.maven.plugins.MavenPublishPlugin")) { + return + } + project.logger.debug("Generating default publication") + project.afterEvaluate { + project.plugins.withType(MavenPublishPlugin) { def publishingPlugin -> + def publishingExtension = project.extensions.findByName('publishing') + if (!hasPublication(publishingExtension)) { + project.logger.debug("Stubs publication is not present - will create one") + publishingExtension.publications { + stubs(MavenPublication) { + artifactId "${project.name}-${extension.stubsSuffix}" + artifact stubsTask + } + } + } else { + project.logger.warn("Stubs publication was present - won't create a new one. Remember about passing stubs as artifact") + } + } + } + } + + private boolean hasPublication(def publishingExtension) { + try { + return publishingExtension.publications.getByName('stubs') + } catch (Exception e) { + return false + } + } + + private boolean classIsOnClasspath(String className) { + try { + Class.forName(className) + return true + } catch (Exception e) { + project.logger.debug("Maven Publish Plugin is not available") + } + } } diff --git a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/bootSimple/build.gradle b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/bootSimple/build.gradle index 3e1383337b..1f0e725251 100644 --- a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/bootSimple/build.gradle +++ b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/bootSimple/build.gradle @@ -62,25 +62,6 @@ wrapper { gradleVersion '2.2.1' } -task stubsJar(type: Jar, dependsOn: ["generateWireMockClientStubs"]) { - baseName = "${project.name}" - classifier = "stubs" - from stubsOutputDirRoot -} - -artifacts { - archives stubsJar -} - -publishing { - publications { - stubs(MavenPublication) { - artifactId "${project.name}-stubs" - artifact stubsJar - } - } -} - test { testLogging { exceptionFormat = 'full' diff --git a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/messagingProject/build.gradle b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/messagingProject/build.gradle index 2f5a549e19..222f9b241c 100644 --- a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/messagingProject/build.gradle +++ b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/messagingProject/build.gradle @@ -14,8 +14,6 @@ group = 'org.springframework.cloud.testprojects' ext { contractsDir = file("repository/mappings") stubsOutputDirRoot = file("${project.buildDir}/production/${project.name}-stubs/") - wireMockStubsOutputDir = new File(stubsOutputDirRoot, 'repository/mappings/') - contractsOutputDir = new File(stubsOutputDirRoot, 'repository/contracts/') targetFramework = 'Spock' } @@ -66,46 +64,15 @@ contractVerifier { targetFramework = 'Spock' contractsDslDir = contractsDir // generatedTestSourcesDir = file("${project.rootDir}/src/test/groovy/") - stubsOutputDir = wireMockStubsOutputDir + stubsOutputDir = stubsOutputDirRoot } -//TODO: Put it into the plugin -task createWireMockStubsOutputDir << { - wireMockStubsOutputDir.mkdirs() -} - -generateWireMockClientStubs.dependsOn { createWireMockStubsOutputDir } generateContractTests.dependsOn generateWireMockClientStubs wrapper { gradleVersion '2.12' } -task copyContracts(type: Copy) { - from contractsDir - include '**/*.groovy' - into contractsOutputDir -} - -task stubsJar(type: Jar, dependsOn: ["generateWireMockClientStubs", copyContracts]) { - baseName = "${project.name}" - classifier = "stubs" - from stubsOutputDirRoot -} - -artifacts { - archives stubsJar -} - -publishing { - publications { - stubs(MavenPublication) { - artifactId "${project.name}-stubs" - artifact stubsJar - } - } -} - test { testLogging { exceptionFormat = 'full' diff --git a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/build.gradle b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/build.gradle index 5b67157601..9375d437c5 100644 --- a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/build.gradle +++ b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/build.gradle @@ -58,8 +58,6 @@ configure([project(':fraudDetectionService'), project(':loanApplicationService') ext { contractsDir = file("mappings") stubsOutputDirRoot = file("${project.buildDir}/production/${project.name}-stubs/") - wireMockStubsOutputDir = file(new File(stubsOutputDirRoot, 'repository/mappings/')) - contractsOutputDir = file(new File(stubsOutputDirRoot, 'repository/contracts/')) } contractVerifier { @@ -68,7 +66,7 @@ configure([project(':fraudDetectionService'), project(':loanApplicationService') baseClassForTests = 'org.springframework.cloud.MvcSpec' contractsDslDir = file("${project.projectDir.absolutePath}/mappings/") generatedTestSourcesDir = file("${project.buildDir}/generated-test-sources/") - stubsOutputDir = wireMockStubsOutputDir + stubsOutputDir = stubsOutputDirRoot } jar { @@ -96,31 +94,6 @@ configure([project(':fraudDetectionService'), project(':loanApplicationService') clean.dependsOn('cleanup') - task copyContracts(type: Copy) { - from contractsDir - include '**/*.groovy' - into contractsOutputDir - } - - task stubsJar(type: Jar, dependsOn: ["generateWireMockClientStubs", copyContracts]) { - baseName = "${project.name}" - classifier = "stubs" - from stubsOutputDirRoot - } - - artifacts { - archives stubsJar - } - - publishing { - publications { - stubs(MavenPublication) { - artifactId "${project.name}-stubs" - artifact stubsJar - } - } - } - test { testLogging { exceptionFormat = 'full' @@ -137,7 +110,7 @@ configure(project(':loanApplicationService')) { task copyCollaboratorStubs(type: Copy) { File fraudBuildDir = project(':fraudDetectionService').buildDir - from(new File(fraudBuildDir, "/production/${project(':fraudDetectionService').name}-stubs/repository/")) + from(new File(fraudBuildDir, "/production/${project(':fraudDetectionService').name}-stubs/")) into "src/test/resources/" } diff --git a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/sampleProject/build.gradle b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/sampleProject/build.gradle index b388ed0da6..eb108f14e3 100644 --- a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/sampleProject/build.gradle +++ b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/sampleProject/build.gradle @@ -58,8 +58,6 @@ configure([project(':fraudDetectionService'), project(':loanApplicationService') ext { contractsDir = file("mappings") stubsOutputDirRoot = file("${project.buildDir}/production/${project.name}-stubs/") - wireMockStubsOutputDir = file(new File(stubsOutputDirRoot, 'repository/mappings/')) - contractsOutputDir = file(new File(stubsOutputDirRoot, 'repository/contracts/')) } contractVerifier { @@ -68,7 +66,7 @@ configure([project(':fraudDetectionService'), project(':loanApplicationService') baseClassForTests = 'org.springframework.cloud.MvcSpec' contractsDslDir = file("${project.projectDir.absolutePath}/mappings/") generatedTestSourcesDir = file("${project.buildDir}/generated-test-sources/") - stubsOutputDir = wireMockStubsOutputDir + stubsOutputDir = stubsOutputDirRoot } jar { @@ -94,31 +92,6 @@ configure([project(':fraudDetectionService'), project(':loanApplicationService') clean.dependsOn('cleanup') - task copyContracts(type: Copy) { - from contractsDir - into contractsOutputDir - includeEmptyDirs = true - } - - task stubsJar(type: Jar, dependsOn: ["generateWireMockClientStubs", copyContracts]) { - baseName = "${project.name}" - classifier = "stubs" - from stubsOutputDirRoot - } - - artifacts { - archives stubsJar - } - - publishing { - publications { - stubs(MavenPublication) { - artifactId "${project.name}-stubs" - artifact stubsJar - } - } - } - test { testLogging { exceptionFormat = 'full' @@ -134,7 +107,7 @@ configure(project(':loanApplicationService')) { task copyCollaboratorStubs(type: Copy) { File fraudBuildDir = project(':fraudDetectionService').buildDir - from(new File(fraudBuildDir, "/production/${project(':fraudDetectionService').name}-stubs/repository/")) + from(new File(fraudBuildDir, "/production/${project(':fraudDetectionService').name}-stubs/")) into "src/test/resources/" } diff --git a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/scenarioProject/build.gradle b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/scenarioProject/build.gradle index 75060f4740..67fa4ba4b8 100644 --- a/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/scenarioProject/build.gradle +++ b/spring-cloud-contract-verifier/spring-cloud-contract-verifier-gradle-plugin/src/test/resources/functionalTest/scenarioProject/build.gradle @@ -59,31 +59,18 @@ configure([project(':fraudDetectionService'), project(':loanApplicationService') ext { contractsDir = file("mappings") stubsOutputDirRoot = file("${project.buildDir}/production/${project.name}-stubs/") - wireMockStubsOutputDir = file(new File(stubsOutputDirRoot, 'repository/mappings/')) - contractsOutputDir = file(new File(stubsOutputDirRoot, 'repository/contracts/')) } - task copyContracts(type: Copy) { - from contractsDir - include '**/*.groovy' - into contractsOutputDir - } - - task stubsJar(type: Jar, dependsOn: ["generateWireMockClientStubs", copyContracts]) { - baseName = "${project.name}" - classifier = "stubs" - from stubsOutputDirRoot - } - - artifacts { - archives stubsJar - } + // Automatically added by plugin: + // copyContracts - copies contracts to the output folder from which JAR will be created + // verifierStubsJar - JAR with a provided stub suffix + // the presented publication is also added by the plugin but you can modify it as you wish publishing { publications { stubs(MavenPublication) { artifactId "${project.name}-stubs" - artifact stubsJar + artifact verifierStubsJar } } } @@ -97,7 +84,7 @@ configure([project(':fraudDetectionService'), project(':loanApplicationService') baseClassForTests = 'org.springframework.cloud.MvcSpec' contractsDslDir = file("${project.projectDir.absolutePath}/mappings/") generatedTestSourcesDir = file("${project.buildDir}/generated-test-sources/") - stubsOutputDir = wireMockStubsOutputDir + stubsOutputDir = stubsOutputDirRoot } jar { @@ -138,7 +125,7 @@ configure(project(':loanApplicationService')) { task copyCollaboratorStubs(type: Copy) { File fraudBuildDir = project(':fraudDetectionService').buildDir - from(new File(fraudBuildDir, "/production/${project(':fraudDetectionService').name}-stubs/repository/")) + from(new File(fraudBuildDir, "/production/${project(':fraudDetectionService').name}-stubs/")) into "src/test/resources/" }