Java 插件中的 Gradle-jar 文件名

我第一次尝试和格拉德尔在一起。我正在尝试用一个 mavenjava 项目来编译和创建一个 jar 文件。它正在编译和创建 build/libs 目录中的 jar 文件

主干 -XXXversion-SNAPSHOT. jar

我从这个 maven java 项目的主干目录运行 gradle build 文件。

我希望在 jar 文件名中获得项目名(对于 ex: project1) ,比如

Project1 -XXXVERION-SNAPSHOT. jar

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

100801 次浏览

下面是目录结构:

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

build.gradle中包括以下内容:

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


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

这将生成正确的 ZIP、 POM 和 JAR。


此外,尝试设置:

archivesBaseName = 'project1'

或(已弃用) :

jar.baseName = 'project1'

默认项目名称取自项目存储在的目录。您应该为您的构建设置正确的项目名称,而不是显式地更改 jar 的命名。目前,这在 build.gradle文件中是不可能的。相反,您必须在根目录中创建一个 settings.gradle文件。这个 settings.gradle文件应该包含以下内容:

rootProject.name = 'project1'

如果您有一些子移动程序,您可以在 build.gradle (for jar)中使用

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

我最近迁移到4.6年级(从3.something)和

jar {
baseName = 'myjarname'
}

停止工作,从文件夹名称命名我的罐子。

所以我换成了 archivesBaseName = 'myjarname'

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

目前使用 Kotlin 作为 Gradle DSL。以下声明对我有效:

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

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

如果要保留版本号:

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

它会产生类似 hello-world-1.2.3.jar的东西

在 Kotlin,你亦可使用:

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

使用 Spring boot 和 Kotlin DSL,你可以使用:

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

如果您想在 jar 文件名后面追加一个日期,您可以这样做:

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

结果是 <basename>_07_05_2020.jar

您必须删除 build.gradle 文件中的“ version”标记!

如果您正在使用一个较新的 Gradle 版本,baseNamearchiveName现在将不推荐使用

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