在其build.gradle.kts
步骤中使用:quarkusBuild
,在根NoSuchElementException
中应用了Quarkus插件的多模块gradle项目失败:
> 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") version "1.9.1.Final"
移到子项目的build.gradle.kts
上,构建成功。似乎quarkus构建步骤在声明插件的位置而不是实际应用的位置运行。
理想情况下,我想在根目录中一次声明该插件,然后将其仅应用于子项目,而不是针对根项目执行该插件,因为那里显然没有什么要构建的。
有什么想法吗?
答案 0 :(得分:1)
您需要添加apply false
plugins {
kotlin("jvm") version "1.3.72" apply false
id("io.quarkus") version "1.9.1.Final" apply false
}
https://docs.gradle.org/current/userguide/plugins.html#sec:subprojects_plugins_dsl
您的构建还假设每个子模块都是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
}
}
}