Spring 引导 2 - 更改 Jar 名称

Spring Boot 2 - Change Jar Name

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

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

不过我想改jar文件名,不改rootProject.name.

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

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

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

bootJar {
   archiveName = 'whatever'
}

看看here.

感谢@AndyWilkinson的解答!

bootJar {
  baseName "jarName"
  launchScript()
}

.

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

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

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

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

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()}")
}

参见:

为Gradle6

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())

您还可以使用:

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

或者使用 jar-plugin

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

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

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

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

给出

为我工作

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

在主要 build.gradle 内部。二手

Gradle 6.X Spring开机2.X