我应该如何在 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中为单个测试类并行执行JUnit测试

如何在 Gradle 中为 OpenAPI 3.0 使用 Swagger Codegen?

如何在多模块spring boot应用程序gradle中只访问不同模块的一个类?

如何在intelliJ IDEA中为我现有的Kotlin项目生成build.gradle文件

如何在Android Studio中为Gradle设置apk的应用名称

如何在 build.gradle 中为不同的 productFlavors 定义 android:label