Spring Boot 2-更改Jar名称

Bra*_*dek 12 gradle build.gradle spring-boot spring-boot-gradle-plugin

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

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

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

这是我bootJar和文件的springBoot各个部分build.gradle

bootJar {
  launchScript()
}
Run Code Online (Sandbox Code Playgroud)

springBoot {
  buildInfo {
    properties {
      artifact = "jarName"
      group = "groupName"
      name = "projectName"
      version = "1.0"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

Pla*_*nky 14

archiveFileName是新的热点。其他所有东西都已弃用。

bootJar {
   archiveFileName = "${archiveBaseName.get()}.${archiveExtension.get()}"
}
Run Code Online (Sandbox Code Playgroud)

看到:


mrc*_*htr 10

您还可以使用:

tasks.bootJar {
    archiveFileName.set("app.jar")
}
Run Code Online (Sandbox Code Playgroud)

或者使用 jar 插件

tasks.jar {
    archiveFileName.set("app.jar")
}
Run Code Online (Sandbox Code Playgroud)


naX*_*aXa 8

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

bootJar {
   archiveName = "$baseName.$extension"
}
Run Code Online (Sandbox Code Playgroud)

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

  • [archiveName](https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html#org.gradle.api.tasks.bundling.Jar:archiveName) 属性已弃用由于某种原因,但我找到了一种更简单的方法:`bootJar { archiveVersion = null }`。这会覆盖 [archiveVersion](https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html#org.gradle.api.tasks.bundling.Jar:archiveVersion ) 属性,默认等于 `project.version`。在这种情况下,Jar 任务会生成没有版本的最终“archiveFileName”。 (4认同)

Opa*_*pal 7

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

bootJar {
   archiveName = 'whatever'
}
Run Code Online (Sandbox Code Playgroud)

在这里看看。


小智 7

对于 Gradle 6

bootJar {
    archiveBaseName = 'freeway-server'
    archiveVersion = '1.0.0'
    archiveFileName = 'freeway-server.jar'
}
Run Code Online (Sandbox Code Playgroud)

忘记:-

System.out.print(bootJar.getArchiveBaseName().get())
System.out.print(bootJar.getArchiveVersion().get())
System.out.print(bootJar.getArchiveFileName().get())
Run Code Online (Sandbox Code Playgroud)


Bra*_*dek 6

感谢@AndyWilkinson的回答!

bootJar {
  baseName "jarName"
  launchScript()
}
Run Code Online (Sandbox Code Playgroud)

springBoot {
  buildInfo {
    properties {
      group = "groupName"
      name = "projectName"
      version = "1.0"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)