30

我在我的 Gradle 项目中使用 Spring Boot 2 在 Jenkins 中构建 jar,我想更改该 jar 文件的名称。

默认情况下,Spring Boot 2 使用 Gradle 属性rootProject.name,可以在/settings.gradle文件中设置。

但是,我想更改 jar 文件名,而不更改rootProject.name.

这是文件的我bootJarspringBoot部分build.gradle

bootJar {
  launchScript()
}

.

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

注意: artifact没有像我预期的那样设置 jar 名称,阅读后:https ://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/html/#integrating-with-actuator

4

8 回答 8

54

archiveFileName是新的热点。其他所有内容均已弃用。

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

或 Kotlin DSL 等价物:

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

看:

于 2019-06-07T15:43:06.443 回答
13

由于bootJar任务扩展Jar,您可以使用archiveName直接设置名称:

bootJar {
   archiveName = 'whatever'
}

看看这里

于 2018-11-02T17:12:00.210 回答
11

感谢@AndyWilkinson的回答!

bootJar {
  baseName "jarName"
  launchScript()
}

.

springBoot {
  buildInfo {
    properties {
      group = "groupName"
      name = "projectName"
      version = "1.0"
    }
  }
}
于 2018-11-02T18:08:07.557 回答
8

对于 Gradle 6

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

忘记:-

System.out.print(bootJar.getArchiveBaseName().get())
System.out.print(bootJar.getArchiveVersion().get())
System.out.print(bootJar.getArchiveFileName().get())
于 2019-11-13T09:03:12.130 回答
4

我的目标是从存档名称中删除版本。我是这样做的:

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

现在 Gradle 生成“project-name.jar”而不是“project-name-1.0-SNAPSHOT.jar”。此解决方案是通用的,不会对任何特定的存档名称进行硬编码。

于 2019-03-08T22:51:38.403 回答
3

您还可以使用:

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

或者使用 jar-plugin

tasks.jar {
    archiveFileName.set("app.jar")
}
于 2020-04-27T14:21:24.197 回答
0

大多数人只是想在 jar 名称中没有版本,而不是完全更改名称。

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

将使用 Kotlin DSL 来完成。最终名称由 给出tasks.bootJar.get().archiveFileName.get()

于 2020-09-25T22:35:22.673 回答
0

为我工作

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

在主 build.gradle 内部。用过的

Gradle 6.X Spring Boot 2.X

于 2020-10-30T08:46:23.020 回答