在根项目“application”中找不到路径为“:produit”的项目,该项目具有使用Quarkus的Gradle多模块项目

fdx2calv  于 2023-02-13  发布在  其他
关注(0)|答案(1)|浏览(178)

我正在尝试设置一个Gradle多模块项目,该项目将使用Quarkus来运行应用程序。

rootFolder    
|----produit    
|------build.gradle
|----application
|------build.gradle
|--settings.gradle

根的settings.gradle

rootProject.name = "proddoc"

include("produit")
include("application")

pluginManagement {
    val quarkusPluginVersion: String by settings
    val quarkusPluginId: String by settings
    repositories {
        mavenCentral()
        gradlePluginPortal()
        mavenLocal()
    }
    plugins {
        id(quarkusPluginId) version quarkusPluginVersion
    }
}

produit/build.gradle

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

plugins {
    kotlin("jvm") version "1.7.21"
}

repositories {
    mavenCentral()
}

val quarkusPlatformVersion: String by project

dependencies {
    testImplementation(kotlin("test"))

    implementation(enforcedPlatform("io.quarkus:quarkus-vertx:${quarkusPlatformVersion}"))
    implementation("io.quarkus:quarkus-vertx")
}

tasks.test {
    useJUnitPlatform()
}

tasks.withType<KotlinCompile> {
    kotlinOptions.jvmTarget = "1.8"
}

application/build.gradle(使用Quarkus CLI生成):

plugins {
    kotlin("jvm") version "1.7.22"
    kotlin("plugin.allopen") version "1.7.22"
    id("io.quarkus")
}

repositories {
    mavenCentral()
    mavenLocal()
}

val quarkusPlatformGroupId: String by project
val quarkusPlatformArtifactId: String by project
val quarkusPlatformVersion: String by project

dependencies {
    implementation(enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}"))
    implementation("io.quarkus:quarkus-resteasy-reactive")
    implementation("io.quarkus:quarkus-kotlin")
    implementation("io.quarkus:quarkus-vertx")
    implementation("io.quarkus:quarkus-resteasy-reactive-jackson")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    implementation("io.quarkus:quarkus-arc")
    testImplementation("io.quarkus:quarkus-junit5")
    testImplementation("io.rest-assured:rest-assured")

    implementation(project(":produit")) // I just added this
}

java {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
}

tasks.withType<Test> {
    systemProperty("java.util.logging.manager", "org.jboss.logmanager.LogManager")
}
allOpen {
    annotation("javax.ws.rs.Path")
    annotation("javax.enterprise.context.ApplicationScoped")
    annotation("io.quarkus.test.junit.QuarkusTest")
}

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
    kotlinOptions.jvmTarget = JavaVersion.VERSION_17.toString()
    kotlinOptions.javaParameters = true
}

当我在项目根目录下运行gradle compileJava时,项目会编译,但是当我在application目录下运行quarkus dev时,我会遇到以下错误:
在根项目“application”中未能找到路径为“:produit”的项目。
我不知道如何让Quarkus项目在它认为是根目录的地方之外发现模块。

px9o7tmv

px9o7tmv1#

答案很简单:不要尝试从应用程序文件夹运行项目(./gradlew quarkusDev),而要从根文件夹运行
然而,与此问题相关的一个问题仍然存在:https://github.com/quarkusio/quarkus/issues/30748 Quarkus在开发模式下不检测produit模块中的bean,但一旦项目打包为jar,它就可以正常工作。

相关问题