从另一个服务(模块)获取服务和模型 Gradle

Get service and model from another service (module) Gradle

问题的本质。 我有几个服务。

  1. Starter - 启动和停止其余的
  2. Service_for_calc - 用于计算一些操作
  3. Service_sample - 例如服务
  4. Common_Service-a 用于存储模型和实用程序的服务

根据我的想法,我将 运行 一个启动器,它将 运行 其余的服务。每个服务都将具有相同的端点和模型。例如,使用 WhoIs 功能。 每项服务都必须告诉您它是谁。 我不想在每个服务(模块)中创建模型和@Service。 我想在 Common_service 中创建它并只导入现成的逻辑。 我试图通过 gradle 做到这一点 在根设置中执行此操作。 gradle 我写了

include 'Service_for_calc'
include 'Common_Service'
include 'Service_sample'
include 'Starter '

并且在服务(模块)中我规定了它

implementation project(':hub.common')

但我 运行 遇到了一些问题,我什至无法清楚地描述它,因为每次看起来都不一样,但这是我尝试以这种方式工作时遇到的错误

  1. 该模块没有看到 类 来自 common 或没有看到包(尽管 IDE 开始向我建议它们)
  2. 依赖项开始出现某种问题(具体来说,Spring 依赖项将每隔一段时间开始工作)
  3. 有时gradle没看到,在执行项目(':hub.common')上报错,报错是没有这个项目(名字是正确的)
  4. 在我删除依赖项后,重新加载Gradle并安装它,它成功了,但是当我试图在别人的电脑上打开这个项目时,第1点重复了

也许我做错了什么,或者我根本不应该这样做。 这种做法是否实行?值得通过 gradle 来做还是我应该通过类路径来尝试? 值得在一个共同的项目中做所有的服务吗?

很高兴得到详细的答复!

你有模块名称冲突,如果你有一个名为 include 'Common_Service' 的模块,那么你应该 implementation project(':Common_Service')

PS: Here git 多模块回购,也许这对你有帮助。

我root解决了build.gradle

buildscript {
    ext {
        springBootVersion = '2.4.4'
        dependencyManagementVersion = '1.0.11.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
        classpath "io.spring.gradle:dependency-management-plugin:${dependencyManagementVersion}"
    }
}

allprojects {
    group = 'omegabi.back.hub'
    version = '0.0.1-SNAPSHOT'
}

subprojects {

    apply plugin: 'java'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'

    sourceCompatibility = 11

    repositories {
        mavenCentral()
    }

    dependencies {
        compileOnly 'org.projectlombok:lombok'
        annotationProcessor 'org.projectlombok:lombok'
        implementation 'org.springframework.boot:spring-boot-starter-test'
    }
}


project(':hub.sample_service') {
    dependencies {
        compile project(':hub.common_service')
    }
}

我通过在除根项目之外的每个项目中删除 settings.gradle 解决了这个问题!