当前位置: 首页 > 知识库问答 >
问题:

如何用Quarkus建立多模块分级项目?

冀崇凛
2023-03-14

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

> 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构建步骤是在插件声明的地方运行的,而不是在插件实际应用的地方。

理想情况下,我希望在根项目中声明一次插件,然后仅将其应用于子项目,而不是在根项目中执行它,在根项目中显然没有什么可构建的。

有什么想法吗?

共有1个答案

傅彬
2023-03-14

您需要添加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
        }
    }
}  
 类似资料:
  • 我继承了一个具有以下设置的项目。Gradle中大约有5个单独的模块,分别位于5个不同的git存储库中。这些模块的版本控制是由ScmVersion插件驱动的。其中一个模块是一个将这些模块集成在一起的应用程序。 模块之间的依赖关系在build.gradle dependency部分中由groupId、artificatId和version指定。 我对Gradle很陌生。到目前为止,我已经创建了一个简单

  • 我的问题似乎类似于运行在Quarkus(gradle)上的多模块项目中的ClassCastException。 不过我用的是maven。我可以确认在使用转轮或测试时没有出现问题。我创建了一个示例应用程序,在https://github.com/AmsterdamFilho/quarkus-poc. 如果在开发模式下运行应用程序,并使用swagger ui或curl执行endpoint,则会出现异常

  • 为了重用gradle文件中的代码,我通常为某些模块提供一个“基本”gradle文件,然后应用它们并添加它可能需要的任何新的依赖项。我正在将所有的gradle文件转换为新的Kotlin DSL的过程中,但是我在使用下面的“基础”文件的关键字时遇到了“未解决的引用”错误。 上面的文件在我的根项目中,我只是在功能模块中使用以下内容 这在Groovy中工作得很好,但是当转移到Kotlin时完全中断了,有没

  • 问题内容: 我有一个多模块的Maven项目。父POM和单个模块的pom运行正常(因为每个模块中的代码运行正常,没有任何依赖关系问题,目标运行没有任何警告/错误)。现在,我需要为每个模块创建一个jar。 项目结构及其依赖关系大致如下 我遵循了这个 Maven多模块项目-将所有“包”JARS从子模块复制到父级/目标/ 而且,能够将我的所有子模块的jar放入一个文件夹,但是我无法运行任何jar,因为模块

  • 我是新来的,并尝试在Maven多模块项目中使用它。我的项目结构如下: 应用程序模块执行具有构建目标的quarkus maven插件。包含一个简单的rest控制器,因此也包含一个在中。RESTAPI模块由应用程序模块引用。 如果我使用打包整个项目,那么生成的runner jar将按预期工作。但是,如果我尝试使用在开发模式下启动项目,我会遇到以下异常: 错误]无法执行目标io。quarkus:quar

  • 我正在我的querying-api模块中编写测试用例来测试我的API,并且我希望在测试开始用预定义的测试数据加载数据库之前运行我的数据库加载器服务,同时测试加载器是否仍然工作。但是,在运行时出现以下错误: 测试引用公共域定义库没有问题... 父POM文件: 数据库加载程序POM文件: