Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以从gradle中的根模块获取类吗?_Java_Spring Boot_Gradle - Fatal编程技术网

Java 可以从gradle中的根模块获取类吗?

Java 可以从gradle中的根模块获取类吗?,java,spring-boot,gradle,Java,Spring Boot,Gradle,我有多模块spring boot项目。根项目是“BookStore”,子模块是“api”。我尝试在“书店”的“api”类中使用。但我有一个错误: 评估项目“:api”时出现问题。 在项目“:api”中找不到路径为“:BookStore”的项目 My root settings.gradle: pluginManagement { plugins { id 'org.springframework.boot' version "2.3.3.RELEASE"

我有多模块spring boot项目。根项目是“BookStore”,子模块是“api”。我尝试在“书店”的“api”类中使用。但我有一个错误:

评估项目“:api”时出现问题。 在项目“:api”中找不到路径为“:BookStore”的项目

My root settings.gradle:

pluginManagement {
    plugins {
        id 'org.springframework.boot' version "2.3.3.RELEASE"
        id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    }
}
rootProject.name = 'BookStore'

include 'api'
根目录的build.gradle:

plugins {
    id 'org.springframework.boot'
    id 'io.spring.dependency-management'
    id 'java'
    id 'idea'
}

allprojects {
    group = 'com.aleksandr'
    version = '1.0-SNAPSHOT'
    description = 'BookStore'

}
subprojects {
    repositories {
        mavenCentral()
    }

    apply {
        plugin("io.spring.dependency-management")
    }
}
java.sourceCompatibility = JavaVersion.VERSION_1_8

repositories {
    mavenLocal()
    maven {
        url = uri('https://repo.maven.apache.org/maven2/')
    }
}


dependencies {

    implementation project(':api')
}
和子模块的build.gradle:

plugins {
    id 'org.springframework.boot'
    id 'io.spring.dependency-management'
    id 'java'
    id 'idea'
}

repositories {
    mavenCentral()
    maven {
        url = uri('https://repo.maven.apache.org/maven2/')
    }
}
dependencies {
    compile project(":BookStore")
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

我做错了什么?如何从根模块获取类?

如果需要创建从子项目(此处为
api
)到根项目的依赖项,则必须使用以下依赖项符号之一:

子模块构建。渐变

dependencies {
    api(project(":"))  // ":" is the identifier for the rootProject
    
    // OR 
    
    api(rootProject)   // "rootProject" varible points to the root Project instance.
    
}
但在您的示例中还有另一个问题:您正在根项目和
api
子项目之间创建一个依赖循环,这是不允许的


依我看,你的
api
子项目不应该依赖于根项目。

那么,架构有问题吗?是的,似乎有问题。我假设您的根项目“BookStore”是包含@springbootplication入口点类的主应用程序项目;此项目“使用”子JCets,如
api
。但是为什么
api
要依赖于这个主要的应用程序项目呢??我想这里有点不对劲