5

I am facing some issues with the gradle plugin to deploy/publish the jar which is generated by swagger-codegen plugin.

I already looked at this question and my needs are completely different but it is acting like this. It is deploying the jar generated by the spring-boot application instead of the codegen one.

This is my task to generate the source folder:

import io.swagger.codegen.config.CodegenConfigurator
import io.swagger.codegen.DefaultGenerator

def swaggerSourceFile = "${project.rootDir}/build/generated/swagger-json/swagger.json"
def swaggerTargetFolder = 'build/generated/java/src/main/java'
task generateApi {
    inputs.file("$swaggerSourceFile")
    outputs.dir("$projectDir/$swaggerTargetFolder")
    doLast {
        def config = new CodegenConfigurator()
        config.setInputSpec("$swaggerSourceFile")
        config.setOutputDir("$projectDir/$swaggerTargetFolder")
        config.setLang('java')
        config.setAdditionalProperties([
                'apiPackage'   : 'com.xyz.abc.testmanager.controller',
                'modelPackage' : 'com.xyz.abc.testmanager.model',
                'sourceFolder' : swaggerTargetFolder,
                'groupId'      : 'com.xyz.abc',
                "artifactId"   : 'testmanager',
                'pom.version'  : '1.0.' + System.getenv('BUILD_NUMBER')
        ])
        new DefaultGenerator().opts(config.toClientOptInput()).generate()
    }
}

clean.doFirst {
    delete(swaggerTargetFolder)
}

configurations {
    generatedCompile
}

sourceSets {
    generated {
        compileClasspath = configurations.generatedCompile
        java {
            srcDir file("${project.buildDir.path}/swagger/src/main/java")
        }
    }
    main {
        compileClasspath += generated.output
        runtimeClasspath += generated.output
    }
    test {
        compileClasspath += generated.output
        runtimeClasspath += generated.output
    }
}

The upload task is:

def ifJenkins = System.getenv('BUILD_NUMBER') != null ? true : false
uploadArchives {
    repositories {
        mavenDeployer {
            if(ifJenkins){
                repository(url: "http://maven.cloud.test:8081/nexus/content/repositories/releases/") {
                    authentication(userName: System.getenv('MAVEN_CREDS'), password: System.getenv('MAVEN_CREDS_PASSWORD'))
                }
            }
            else
            {
                repository(url: "http://maven.cloud.test:8081/nexus/content/repositories/releases/") {
                    authentication(userName: 'test', password: 'test')
                }
            }

            if(ifJenkins){
                pom.version = "1.0." + System.getenv('BUILD_NUMBER')
                pom.groupId = "com.xyz.abc"
            } else{
                pom.version = "0.0." + System.currentTimeMillis()
                pom.groupId = "com.xyz.abc"
            }
            pom.artifactId = jar.baseName
            pom.packaging = "jar"
            pom.name = "Test Manager Client"
        }
    }
}

I am stuck here as I am not sure whether the problem is with the task or something else.

How do I make sure that my pom.xml generated by swagger-codegen is actually generating the jar and upload the same jar to maven?

Aditya Peshave
  • 667
  • 9
  • 26

0 Answers0