Gradle - jar file name in java plugin

2020-05-20 05:20发布

问题:

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.

回答1:

The default project name is taken from the directory the project is stored in. Instead of changing the naming of the jar explicitly you should set the project name correct for your build. At the moment this is not possible within the build.gradle file. Instead, you have to create a settings.gradle file in your root directory. This settings.gradle file should have this one liner included:

rootProject.name = 'project1'


回答2:

Try setting:

archivesBaseName = 'project1'

or

jar.baseName = 'project1'

Here is the full solution:

trunk
˪ build
  ˪ libs
    ˪ project1-1.0-SNAPSHOT.jar 
˪ build.gradle

build.gradle is:

apply plugin: 'java'
apply plugin: 'maven'

archivesBaseName = 'project1'
version = '1.0-SNAPSHOT'
group = 'example'

It produces correct ZIPs, POMs and JARs.



回答3:

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.



回答4:

If you has some submobule, you can use in build.gradle (for jar)

configurations {
    jar.archiveName = 'submodule-jar.jar'
}


回答5:

You can also use:

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


回答6:

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



回答7:

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



标签: gradle