Brandon Dudek
Brandon Dudek

Reputation: 887

Spring Boot 2 - Change Jar Name

I am using Spring Boot 2 in my Gradle project to do a build to jar in Jenkins, and I would like to change the name of that jar file.

By default, Spring Boot 2 used the Gradle property rootProject.name, which can be set in the /settings.gradle file.

However, I would like to change the jar file name, without changing the rootProject.name.

Here are my bootJar and springBoot sections of the build.gradle file:

bootJar {
  launchScript()
}

.

springBoot {
  buildInfo {
    properties {
      artifact = "jarName"
      group = "groupName"
      name = "projectName"
      version = "1.0"
    }
  }
}

Note: artifact is not setting the jar name, as I expected it to, after reading: https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/html/#integrating-with-actuator

Upvotes: 45

Views: 44487

Answers (8)

Tristate
Tristate

Reputation: 1821

For me worked

project(':org.awseome.subproject') {
 jar() {
     archiveFileName = 'nameOfJar.jar'
 }
}

inside of main build.gradle. Used

Gradle 6.X Spring Boot 2.X

Upvotes: -1

Abhijit Sarkar
Abhijit Sarkar

Reputation: 24518

Most people simply want to not have the version in the jar name, not change the name completely.

tasks.withType<org.springframework.boot.gradle.tasks.bundling.BootJar> {
    archiveVersion.set("")
}

will do it using Kotlin DSL. The final name is given by tasks.bootJar.get().archiveFileName.get().

Upvotes: 1

mrclrchtr
mrclrchtr

Reputation: 1093

You can also use:

tasks.bootJar {
    archiveFileName.set("app.jar")
}

Or with the jar-plugin

tasks.jar {
    archiveFileName.set("app.jar")
}

Upvotes: 10

Planky
Planky

Reputation: 3395

archiveFileName is the new hotness. Everything else is deprecated.

bootJar {
   archiveFileName = "${archiveBaseName.get()}.${archiveExtension.get()}"
}

or the Kotlin DSL equivalent:

tasks.getByName<org.springframework.boot.gradle.tasks.bundling.BootJar>("bootJar") {
   this.archiveFileName.set("${archiveBaseName.get()}.${archiveExtension.get()}")
}

See:

Upvotes: 73

Anik Mazumder
Anik Mazumder

Reputation: 188

For Gradle 6

bootJar {
    archiveBaseName = 'freeway-server'
    archiveVersion = '1.0.0'
    archiveFileName = 'freeway-server.jar'
}

For get:-

System.out.print(bootJar.getArchiveBaseName().get())
System.out.print(bootJar.getArchiveVersion().get())
System.out.print(bootJar.getArchiveFileName().get())

Upvotes: 8

naXa stands with Ukraine
naXa stands with Ukraine

Reputation: 37916

My goal was to remove version from the archive name. I did it this way:

bootJar {
   archiveName = "$baseName.$extension"
}

Now Gradle generates "project-name.jar" instead of "project-name-1.0-SNAPSHOT.jar". This solution is general and doesn't hardcode any particular archive name.

Upvotes: 8

Brandon Dudek
Brandon Dudek

Reputation: 887

Thanks to @AndyWilkinson for the answer!

bootJar {
  baseName "jarName"
  launchScript()
}

.

springBoot {
  buildInfo {
    properties {
      group = "groupName"
      name = "projectName"
      version = "1.0"
    }
  }
}

Upvotes: 10

Opal
Opal

Reputation: 84756

Since bootJar tasks extends Jar you can use archiveName to set name the directly:

bootJar {
   archiveName = 'whatever'
}

Have a look here.

Upvotes: 14

Related Questions