Gradle - jar file name in java plugin

Viewed 98547

I am trying with Gradle first time. I am trying with a maven java project to compile and create a jar file. It is compiling and creating the jar file in build/libs directory as

trunk-XXXVERSION-SNAPSHOT.jar

I am running gradle build file from trunk directory of this maven java project.

I want to get the project name (for ex: project1) in the jar file name, something like

project1-XXXVERSION-SNAPSHOT.jar

in build/libs directory. Please suggest.

9 Answers

I recently migrated to gradle 4.6 (from 3. something) and the

jar {
    baseName = 'myjarname'
}

stopped working, gradle named my jar from the folder name.

So I switched to archivesBaseName = 'myjarname' which works.

Maybe this helps somebody else too.

In Kotlin DSL you can also use:

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

With Spring boot and Kotlin DSL you can use:

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

If you are using a newer Gradle version, baseName, archiveName will now be deprecated. Instead, use something like

jar {
   archivesBaseName = 'project1'
   archiveVersion = '1.0-SNAPSHOT'
}

Currently using Kotlin as Gradle DSL. Following statement works for me:

tasks.withType<AbstractArchiveTask> {
    setProperty("archiveFileName", "hello-world.jar")
}

It works on Spring Boot executable jars as well.

If you want to keep version numbers:

tasks.withType<AbstractArchiveTask> {
    setProperty("archiveBaseName", "hello-world")
}

It will produce something like hello-world-1.2.3.jar

if you want to append a date to the jar file name, you can do it like this:

jar {
    baseName +='_' +new java.text.SimpleDateFormat("dd_MM_yyyy").format(new java.util.Date())
    println(baseName) // just to verify

which results in <basename>_07_05_2020.jar

You have to remove the 'version' tag in your build.gradle file!

Related