关于gradle:Spring Boot 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部分:

1
2
3
bootJar {
  launchScript()
}

1
2
3
4
5
6
7
8
9
10
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


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

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

或Kotlin DSL等效项:

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

请参阅:

  • https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html#org.gradle.api.tasks.bundling.Jar:archiveName

  • https://docs.gradle.org/current/userguide/lazy_configuration.html


感谢@AndyWilkinson的回答!

1
2
3
4
bootJar {
  baseName"jarName"
  launchScript()
}

1
2
3
4
5
6
7
8
9
springBoot {
  buildInfo {
    properties {
      group ="groupName"
      name ="projectName"
      version ="1.0"
    }
  }
}

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

1
2
3
bootJar {
   archiveName = 'whatever'
}

在这里看看。


对于Gradle 6

1
2
3
4
5
bootJar {
    archiveBaseName = 'freeway-server'
    archiveVersion = '1.0.0'
    archiveFileName = 'freeway-server.jar'
}

获取:-

1
2
3
System.out.print(bootJar.getArchiveBaseName().get())
System.out.print(bootJar.getArchiveVersion().get())
System.out.print(bootJar.getArchiveFileName().get())

您也可以使用:

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

或与jar-plugin

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

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

1
2
3
bootJar {
   archiveName ="$baseName.$extension"
}

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


为我工作

1
2
3
4
5
project(':org.awseome.subproject') {
 jar() {
     archiveFileName = 'nameOfJar.jar'
 }
}

在主build.gradle内部。二手

6.X级
Spring Boot 2.X


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

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

将使用Kotlin DSL进行此操作。最终名称由tasks.bootJar.get().archiveFileName.get()给出。