How to create environment specific spring boot jar file name with gradle

Viewed 309

I have a requirement to create spring boot jar file name based upon the environments. The environment can be dev or prod. When I run with the command gradlew clean build, it generates app-service-0.0.1.SNAPSHOT.jar. As per my requirement, it should be app-service-0.0.1.SNAPSHOT.jar for dev environment and app-service-0.0.1.jar for prod environment. How can I customize the naming of spring boot jar file in gradle? Please help me. I have also tried in the following manner, it did not work.

... other gradle code ....
ext {
    isProd = System.properties['env'] == 'prod'
    isDev = System.properties['env'] == 'dev'
}

//if (isDev) tasks.withType(jar).all { it.enabled = false }

task dev(type: org.springframework.boot.gradle.tasks.bundling.BootJar) {
    baseName = 'custom-spring-boot'
    /*
    bootJar {
        archiveFileName = 'my-awesome-app.jar'
    }
    */
}

/*
bootJar {
    if (env == 'dev') {
        archiveFileName = 'my-awesome-app.jar'
    } else {
        archiveFileName = 'hati-app.jar'
    }
   
}
*/

tasks.addRule("Pattern: bootJar<ENV>") { String taskName ->
    if (taskName.startsWith('bootJar')) {
        def env = (taskName - 'bootJar').toLowerCase()
        if (env in ['dev', 'prod',]) {
          task(taskName, type: bootJar) {
              println "Configuring env: $env"
              from("src/main/conf/$env") {
                  into("conf")
              }
          }
        } else {
          println "Invalid env: $env, skipping."
        }
    }
    }

I also checked with this SO link

0 Answers
Related