关于Gradle:Gradle-Java插件中的jar文件名

Gradle - jar file name in java plugin

我是第一次尝试Gradle。 我正在尝试使用Maven Java项目来编译和创建jar文件。 它正在build / libs目录中编译并创建jar文件,如下所示:

trunk-XXXVERSION-SNAPSHOT.jar

我正在从这个Maven Java项目的主干目录运行gradle构建文件。

我想在jar文件名中获取项目名称(例如:project1),例如

project1-XXXVERSION-SNAPSHOT.jar

在build / libs目录中。
请提出建议。


尝试设置:

1
archivesBaseName = 'project1'

要么

1
jar.baseName = 'project1'

这是完整的解决方案:

1
2
3
4
5
trunk
? build
  ? libs
    ? project1-1.0-SNAPSHOT.jar
? build.gradle

build.gradle是:

1
2
3
4
5
6
apply plugin: 'java'
apply plugin: 'maven'

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

它会生成正确的ZIP,POM和JAR。


默认项目名称取自存储项目的目录。与其显式更改jar的命名,不如设置正确的项目名称。目前,这在build.gradle文件中是不可能的。相反,您必须在根目录中创建一个settings.gradle文件。此settings.gradle文件应包括此衬纸:

1
rootProject.name = 'project1'


我最近迁移到了gradle 4.6(从3.开始),并且

1
2
3
jar {
    baseName = 'myjarname'
}

停止工作,gradle从文件夹名称中命名了我的jar。

所以我切换到archivesBaseName = 'myjarname'起作用。

也许这也对其他人有帮助。


如果您有一些子级分子,则可以在build.gradle中使用(用于jar)

1
2
3
configurations {
    jar.archiveName = 'submodule-jar.jar'
}


您还可以使用:

1
2
3
tasks.jar {
    archiveFileName.set("app.jar")
}

如果要将日期附加到jar文件名中,可以这样进行:

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

结果为_07_05_2020.jar


当前使用Kotlin作为Gradle DSL。以下语句对我有用:

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

它也适用于Spring Boot可执行jar。

如果要保留版本号:

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

它将产生类似hello-world-1.2.3.jar