spring-boot - 如何忽略多项目 Kotlin Spring Boot 应用程序的根项目的 gradle 构建?

标签 spring-boot gradle kotlin gradle-multi-project-build

背景:

我目前有一个多模块(多项目)应用程序存储库。 “根”是不是 一个可运行的应用程序。它只是我拥有根目录的源目录 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"
        }
    }
}

NOTE: I'm using apply false on my plugins because I thought it would keep gradle from trying to find a main class when building using gradle build.



我正在尝试做的事情:

我有一个 CI 管道,我想简单地运行 gradle build应该运行 build所有子项目的任务。但是,在那个过程中,我想忽略为“根”项目运行构建或绕过它,因为它不是一个可运行的应用程序,而只是构建子项目。

任何帮助将不胜感激! :)

最佳答案

如果你想忽略任务bootJar ,s o 添加以下配置。

bootJar {
    enabled = false
}

关于spring-boot - 如何忽略多项目 Kotlin Spring Boot 应用程序的根项目的 gradle 构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58276142/

相关文章:

java - H2 数据库 URL 错误

java - 未接收 ApplicationEnvironmentPreparedEvent

java - Activiti + Spring Boot + Gradle 构建挂起,而 gradle clean 测试

Android 架构导航 - onSupportNavigateUp()

android - Kotlin 协程 : one single coroutine at a time in single thread

gradle - 如何从我的自定义gradle扩展访问嵌套的配置值?

spring-boot - 在 Spring Boot 中配置 application.properties 文件有哪些不同的方法

java - 如何将一个简单的 Spring Boot(带有 Gradle 构建系统)部署到 Apache Tomcat(真实服务器,而非嵌入服务器)?

android - 找不到Gradle插件

java - 无法在 OSX 优胜美地上构建 Java 项目