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