Gradle'war'插件如何更改存档名称

Mar*_*nek 7 war gradle spring-boot

如何更改战争名称?

我已经尝试过(我在文档https://docs.gradle.org/4.10.2/dsl/org.gradle.api.tasks.bundling.War.html 中找到了这些参数)

war {
baseName = 'service'
archiveName 'service.war'
}
Run Code Online (Sandbox Code Playgroud)

但是,这是行不通的。我仍然使用快照版本获得名称。

./build/libs/search-0.0.1-SNAPSHOT.war
Run Code Online (Sandbox Code Playgroud)

我正在使用 Gradle 4.10 和 Spring Boot 2.1.2.RELEASE。

M.R*_*uti 14

请参阅此文档:Spring Boot Gradle 参考

总结一下:当Spring Boot gradle插件和plugin一起应用时warwar任务默认是禁用的,被SpringBootbootWar任务“替换”了。

因此,如果要配置战争工件,则需要配置bootWar任务而不是基本war任务:

bootWar {
    baseName = 'service'
    archiveName 'service.war'
}
Run Code Online (Sandbox Code Playgroud)

补充说明:

  • 在 Gradle 5.x 中,archiveName已被弃用,您应该archiveFileName改用
  • 如果您设置了archiveName属性,则不需要设置baseName属性


cod*_*ule 5

M. Ricciuti 的回答是正确的,但需要注意的是,即使archiveName在 Gradle 5.x 中已被弃用,Spring Boot 仍在 2.1.6.RELEASE 中使用它。例如,如果bootWar任务配置了这样的新archiveFileName属性:

bootWar {
    archiveFileName 'service.war'
}
Run Code Online (Sandbox Code Playgroud)

你会得到这个错误:

无法在 org.springframework.boot.gradle.tasks.bundling.BootWar 类型的任务“:bootWar”上找到参数 [service.war] 的方法 archiveFileName()。

暂时使用archiveName。有关详细信息,请参阅 Spring BootWar 类 Java 文档。他们可能会archiveFileName在未来添加。


小智 5

bootWar {
    archiveFileName.set 'service.war'
}
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一适用于 Gradle >= 8.0 的语法,干得好。 (2认同)