从另一个服务(模块)获取服务和模型 Gradle
Get service and model from another service (module) Gradle
问题的本质。
我有几个服务。
- Starter - 启动和停止其余的
- Service_for_calc - 用于计算一些操作
- Service_sample - 例如服务
- 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')
但我 运行 遇到了一些问题,我什至无法清楚地描述它,因为每次看起来都不一样,但这是我尝试以这种方式工作时遇到的错误
- 该模块没有看到 类 来自 common 或没有看到包(尽管 IDE 开始向我建议它们)
- 依赖项开始出现某种问题(具体来说,Spring 依赖项将每隔一段时间开始工作)
- 有时gradle没看到,在执行项目(':hub.common')上报错,报错是没有这个项目(名字是正确的)
- 在我删除依赖项后,重新加载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 解决了这个问题!
问题的本质。 我有几个服务。
- Starter - 启动和停止其余的
- Service_for_calc - 用于计算一些操作
- Service_sample - 例如服务
- 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')
但我 运行 遇到了一些问题,我什至无法清楚地描述它,因为每次看起来都不一样,但这是我尝试以这种方式工作时遇到的错误
- 该模块没有看到 类 来自 common 或没有看到包(尽管 IDE 开始向我建议它们)
- 依赖项开始出现某种问题(具体来说,Spring 依赖项将每隔一段时间开始工作)
- 有时gradle没看到,在执行项目(':hub.common')上报错,报错是没有这个项目(名字是正确的)
- 在我删除依赖项后,重新加载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 解决了这个问题!