Fixed wrong gradle plugin setup

This commit is contained in:
Marcin Grzejszczak
2016-06-30 00:30:17 +02:00
parent 8540e75cfd
commit 24fc9e1351
3 changed files with 20 additions and 16 deletions

View File

@@ -39,18 +39,18 @@ class RecursiveFilesConverter {
private final SingleFileConverter singleFileConverter
private final ContractVerifierConfigProperties properties
private final String additionalFolder
private final File outMappingsDir
RecursiveFilesConverter(SingleFileConverter singleFileConverter, ContractVerifierConfigProperties properties) {
this.properties = properties
this.singleFileConverter = singleFileConverter
this.additionalFolder = ""
this.outMappingsDir = properties.stubsOutputDir
}
RecursiveFilesConverter(SingleFileConverter singleFileConverter, ContractVerifierConfigProperties properties, String additionalFolder) {
RecursiveFilesConverter(SingleFileConverter singleFileConverter, ContractVerifierConfigProperties properties, File outMappingsDir) {
this.properties = properties
this.singleFileConverter = singleFileConverter
this.additionalFolder = additionalFolder
this.outMappingsDir = outMappingsDir
}
void processFiles() {
@@ -80,8 +80,7 @@ class RecursiveFilesConverter {
private Path createAndReturnTargetDirectory(File sourceFile) {
Path relativePath = Paths.get(properties.contractsDslDir.toURI()).relativize(sourceFile.parentFile.toPath())
File rootFile = additionalFolder ? new File(properties.stubsOutputDir, additionalFolder) : properties.stubsOutputDir
Path absoluteTargetPath = rootFile.toPath().resolve(relativePath)
Path absoluteTargetPath = outMappingsDir.toPath().resolve(relativePath)
Files.createDirectories(absoluteTargetPath)
return absoluteTargetPath
}

View File

@@ -23,7 +23,6 @@ import org.gradle.api.tasks.TaskAction
import org.springframework.cloud.contract.verifier.config.ContractVerifierConfigProperties
import org.springframework.cloud.contract.verifier.wiremock.DslToWireMockClientConverter
import org.springframework.cloud.contract.verifier.wiremock.RecursiveFilesConverter
//TODO: Implement as an incremental task: https://gradle.org/docs/current/userguide/custom_tasks.html#incremental_tasks ?
/**
* Generates WireMock stubs from the contracts
@@ -45,8 +44,11 @@ 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()}'")
ContractVerifierConfigProperties props = getConfigProperties()
File outMappingsDir = props.stubsOutputDir != null ? new File(props.stubsOutputDir, DEFAULT_MAPPINGS_FOLDER)
: new File(project.buildDir, "stubs/$DEFAULT_MAPPINGS_FOLDER")
RecursiveFilesConverter converter = new RecursiveFilesConverter(new DslToWireMockClientConverter(),
getConfigProperties(), DEFAULT_MAPPINGS_FOLDER)
getConfigProperties(), outMappingsDir)
converter.processFiles()
}
}

View File

@@ -91,6 +91,7 @@ class SpringCloudContractVerifierGradlePlugin implements Plugin<Project> {
generatedTestSourcesDir = project.file("${project.buildDir}/generated-test-sources/contracts")
contractsDslDir = defaultContractsDir() //TODO: Use sourceset
basePackageForTests = 'org.springframework.cloud.contract.verifier.tests'
stubsOutputDir = stubsOutputDir ?: project.file("${project.buildDir}/stubs")
}
}
@@ -115,7 +116,7 @@ class SpringCloudContractVerifierGradlePlugin implements Plugin<Project> {
task.group = GROUP_NAME
task.conventionMapping.with {
contractsDslDir = { extension.contractsDslDir }
stubsOutputDir = { extension.stubsOutputDir ?: project.file("${project.buildDir}/stubs") }
stubsOutputDir = { extension.stubsOutputDir }
configProperties = { extension }
}
}
@@ -123,14 +124,14 @@ class SpringCloudContractVerifierGradlePlugin implements Plugin<Project> {
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!")
project.logger.info("Spring Cloud Contract Verifier Plugin: 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 }
from { extension.stubsOutputDir ?: project.file("${project.buildDir}/stubs") }
}
task.description = "Creates the stubs JAR task"
task.group = GROUP_NAME
@@ -153,7 +154,8 @@ class SpringCloudContractVerifierGradlePlugin implements Plugin<Project> {
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") }
into { extension.stubsOutputDir != null ?
project.file("${extension.stubsOutputDir}/contracts") : project.file("${project.buildDir}/stubs/contracts") }
}
task.description = "Copies contracts to the output folder"
task.group = GROUP_NAME
@@ -163,22 +165,23 @@ class SpringCloudContractVerifierGradlePlugin implements Plugin<Project> {
private void createAndConfigureMavenPublishPlugin(Task stubsTask, ContractVerifierConfigProperties extension) {
if (!classIsOnClasspath("org.gradle.api.publish.maven.plugins.MavenPublishPlugin")) {
project.logger.debug("Maven Publish Plugin is not present - won't add default publication")
return
}
project.logger.debug("Generating default publication")
project.logger.debug("Spring Cloud Contract Verifier Plugin: 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")
project.logger.debug("Spring Cloud Contract Verifier Plugin: Stubs publication is not present - will create one")
publishingExtension.publications {
stubs(MavenPublication) {
artifactId "${project.name}-${extension.stubsSuffix}"
artifactId "${project.name}"
artifact stubsTask
}
}
} else {
project.logger.warn("Stubs publication was present - won't create a new one. Remember about passing stubs as artifact")
project.logger.info("Spring Cloud Contract Verifier Plugin: Stubs publication was present - won't create a new one. Remember about passing stubs as artifact")
}
}
}