如何使用Quarkus设置多模块gradle项目?

如何使用Quarkus设置多模块gradle项目?,gradle,quarkus,Gradle,Quarkus,在根build.gradle.kts中应用Quarkus插件的多模块gradle项目在:quarkusBuild步骤失败,出现NoTouchElementException: > Task :quarkusBuild FAILED building quarkus jar FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':quarkusBuild'. >

在根
build.gradle.kts
中应用Quarkus插件的多模块gradle项目在
:quarkusBuild
步骤失败,出现
NoTouchElementException

> Task :quarkusBuild FAILED
building quarkus jar

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':quarkusBuild'.
> java.util.NoSuchElementException
build.gradle.kts
如下所示:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    kotlin("jvm") version "1.3.72"
    id("io.quarkus") version "1.9.1.Final"
}

group = "org.example"
version = "1.0-SNAPSHOT"

allprojects {
    repositories {
        mavenCentral()
    }
}

subprojects {
    
    apply {
        plugin("kotlin")
    }

    dependencies {
        implementation(kotlin("stdlib"))
    }
}
但是,将行
id(“io.quarkus”)版本“1.9.1.Final”
移动到子项目的
build.gradle.kts
,构建成功。quarkus构建步骤似乎是在声明插件的地方运行的,而不是在实际应用插件的地方

理想情况下,我希望在根目录中声明一次插件,然后将其仅应用于子项目,而不是针对根项目执行插件,因为根项目显然没有任何可构建的内容


有什么想法吗?

您需要添加
apply false

plugins {
    kotlin("jvm") version "1.3.72" apply false
    id("io.quarkus") version "1.9.1.Final" apply false
}

您的构建还假设每个子模块都是Kotlin模块,这可能是真的,也可能不是真的。您可以执行类似的操作,将特定配置应用于特定任务:

subprojects { subproject ->
    subproject.tasks.withType(JavaCompile).configureEach {
        sourceCompatibility = JavaVersion.VERSION_11
    }
    subproject.tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
        kotlinOptions {
            jvmTarget = JavaVersion.VERSION_11
        }
    }
}