spring-boot - 如何忽略多项目 Kotlin Spring Boot 应用程序的根项目的 gradle 构建?
问题描述
背景:
我目前有一个多模块(多项目)应用程序存储库。“根”不是可运行的应用程序。它只是我有一个根build.gradle.kts
文件的源目录,其中包含我所有子项目之间通用的依赖项和插件。我的每个子项目都有自己的build.gradle.kts
.
所以我的整体项目结构看起来像这样:
my_root_project
- gradle
- wrapper
- gradle-wrapper.jar
- gradle-wrapper.properties
- gradle.build.kts
- settings.gradle.kts
- my_nested_project_a
- src
- main
- kotlin
- my_nested_project_b
...
问题:
每次我运行时gradle build
,我都会收到一条错误消息:
> Task :bootJar FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':bootJar'.
> Main class name has not been configured and it could not be resolved
然而,当我运行我的任何一个子项目(例如build :my_nested_project_a:build
)时,它构建得很好。
当前 Gradle 构建文件
这是我目前在“根”中的内容gradle.build.kts
:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
group = "com.example"
version = "1.0.0"
java.sourceCompatibility = JavaVersion.VERSION_1_8
java.targetCompatibility = JavaVersion.VERSION_1_8
plugins {
id("org.springframework.boot") version "2.1.8.RELEASE" apply false
id("io.spring.dependency-management") version "1.0.8.RELEASE" apply false
kotlin("jvm") version "1.3.50"
kotlin("plugin.spring") version "1.3.50"
kotlin("plugin.jpa") version "1.3.50"
kotlin("plugin.allopen") version "1.3.50"
}
allprojects {
repositories {
maven(url = "https://my.company.com/repo/with/all/the/stuff/I/need")
}
apply(plugin = "org.jetbrains.kotlin.jvm")
apply(plugin = "java")
apply(plugin = "org.springframework.boot")
apply(plugin = "io.spring.dependency-management")
apply(plugin = "org.jetbrains.kotlin.plugin.spring")
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "1.8"
}
}
}
注意:我
apply false
在我的插件上使用,因为我认为它会阻止 gradle 在使用gradle build
.
我正在尝试做的事情:
我有一个 CI 管道,我想简单地运行gradle build
它应该build
为所有子项目运行任务。但是,在那个过程中,我想忽略为“根”项目运行构建或绕过它,因为它不是一个可运行的应用程序,而只是构建子项目。
任何帮助将不胜感激!:)
解决方案
如果要忽略任务bootJar
,请添加以下配置。
bootJar {
enabled = false
}
推荐阅读
- excel - 有没有办法将超链接文件的内容复制到我的剪贴板?
- apache-kafka-streams - Kafka Streams Aggregator 中的访问记录偏移量
- sql - Redshift 权限撤销授权
- java - 需要使用 ObjectMapper 对非静态内部类进行 MixIn 解析 - Java 6
- python - 如何从 Python POST 请求中获取 JSON 数据
- mysql - SQL:如何将数据插入 SET 数据类型?
- angular - 使用 Angular 和 Spring Boot 的 http get 请求的请求标头
- c# - asp.net核心应用程序中多个角度应用程序的csproj配置问题
- javascript - useState 将对象附加到对象数组中
- docker - 在私有 docker 容器中运行整个 GitHub Actions 工作流作业