我应该如何在 Gradle 中为 Spring Boot 应用程序设置主类?
Posted
技术标签:
【中文标题】我应该如何在 Gradle 中为 Spring Boot 应用程序设置主类?【英文标题】:How should i set main class for Spring Boot application in Gradle? 【发布时间】:2016-11-03 17:25:17 【问题描述】:我阅读了 Spring Boot 文档,发现至少有两种方法可以设置主类:
bootRepackage
mainClass = 'demo.Application'
和
springBoot
mainClass = "demo.Application"
我应该使用哪一个,或者它们都需要用于不同的任务?我不想重复自己。
【问题讨论】:
【参考方案1】:这是来自 springBoot 插件的文档:
The gradle plugin automatically extends your build script DSL with a
springBoot element for global configuration of the Boot plugin. Set
the appropriate properties as you would with any other Gradle
extension (see below for a list of configuration options):
下面是bootRepackage插件的mainClass元素的配置示例:
The main class that should be run. If not specified, and you
have applied the application plugin, the mainClassName project
property will be used. If the application plugin has not been
applied or no mainClassName has been specified, the archive will
be searched for a suitable class. "Suitable" means a unique class
with a well-formed main() method (if more than one is found the
build will fail). If you have applied the application plugin,
the main class can also be specified via its "run" task
(main property) and/or its "startScripts" task
(mainClassName property) as an alternative to using the
"springBoot" configuration.
换句话说,这两者是相同的。
【讨论】:
【参考方案2】:在 Gradle 术语中,springBoot
是一个扩展。当您使用它来配置主类时,您正在为项目中的每个重新打包任务配置它。另一方面,bootRepackage
引用单个重新打包任务,因此您只需为该任务配置 mainClass
。
我应该使用哪一个,或者它们都需要用于不同的任务?
如果您只有一个重新打包任务(默认情况下),这取决于个人喜好。
如果您配置了额外的重新打包任务,您最好在每个单独的任务上配置它,而不是使用springBoot
扩展。如果您混合使用这两者,则单个重新打包任务的设置将优先于您使用 springBoot
配置的任何设置。
【讨论】:
以上是关于我应该如何在 Gradle 中为 Spring Boot 应用程序设置主类?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Gradle 中为 OpenAPI 3.0 使用 Swagger Codegen?
如何在多模块spring boot应用程序gradle中只访问不同模块的一个类?
如何在intelliJ IDEA中为我现有的Kotlin项目生成build.gradle文件