spring-boot - 如何在 Kotlin Gradle 多模块项目中为 Spring Boot 应用程序配置“mainClassName”?
问题描述
我在 Kotlin 中有一个 Gradle 多模块项目,在某些模块中使用 Spring Boot。
我在项目的根目录中使用'org.springframework.boot'
and'io.spring.dependency-management'
插件build.gradle
,除了其他东西之外,它还提供了bootRun
任务。
AFAIK 我需要mainClassName
像这样配置(或入口点):
springBoot {
mainClassName = 'de.shinythings.hexagon.HexagonApplicationKt'
}
虽然这适用于包含实际 Spring Boot 应用程序的子项目,但它不适用于根项目。
我希望能够在根项目中配置它,因为我希望能够使用./gradlew bootRun
而不是./gradlew configuration:bootRun
.
其他任务喜欢./gradlew build
或./gradlew test
工作正常。
这是根项目的build.gradle
(链接):
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.4.10'
id 'org.springframework.boot' version '2.3.4.RELEASE'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
implementation project(':configuration')
}
springBoot {
mainClassName = 'de.shinythings.hexagon.HexagonApplicationKt'
}
subprojects {
group = 'de.shinythings.hexagon'
version = '0.0.1-SNAPSHOT'
repositories {
mavenCentral()
}
ext {
mockKVersion = '1.10.2'
}
apply plugin: 'org.jetbrains.kotlin.jvm'
apply plugin: 'io.spring.dependency-management'
dependencies {
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
}
dependencyManagement {
imports {
mavenBom('org.springframework.boot:spring-boot-dependencies:2.3.4.RELEASE')
}
}
compileKotlin {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
freeCompilerArgs = ["-Xjsr305=strict"]
allWarningsAsErrors = true
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
freeCompilerArgs = ["-Xjsr305=strict"]
allWarningsAsErrors = true
}
}
}
在子项目/模块中,此设置有效(链接):
plugins {
id 'org.springframework.boot'
id 'org.jetbrains.kotlin.plugin.spring' version '1.4.10'
}
dependencies {
implementation project(':common')
implementation project(':application')
implementation project(':adapters:persistence')
implementation project(':adapters:web')
implementation 'org.springframework.boot:spring-boot-starter'
implementation('com.h2database:h2')
}
springBoot {
mainClassName = 'de.shinythings.hexagon.HexagonApplicationKt'
}
我需要做什么来配置mainClassName
是根的项目build.gradle
?
解决方案
推荐阅读
- angular - 在 Angular 4 中向 DOM 元素添加事件监听器
- c# - asp.net c#中会话变量范围的范围是什么?
- python - 如何在 Raspberry Pi 3 模型 B 上的 python3 中使用 gTTS
- javascript - 如果我只有 PDF URL,如何将 PDF 作为附件发送
- ibm-jazz - JTS 服务器无法获取其他 CLM 应用程序的根服务文档
- javascript - 组件重新渲染后反应谷歌地图标记消失
- php - Symfony 4:如何在我的本地服务器中使用两种不同的环境
- javascript - 如何将download.pdf重命名为react js中的任何自定义名称
- java - 如何单击下拉菜单并通过 Selenium 和 Java 选择一个选项?
- php - 修剪多个段落 php