截至目前,我们已经搭建了4个微服务了,分别是:eureka-server、gateway-service、eureka-client-demo、openfeign-demo。目前仅仅是4个基础服务,我们就要开4个工程,4个窗口,以后成百上千个服务那不得疯?!!

其实我们可以在idea中用一个工程的四个模块来分别表示这4个服务,接下来我们就搞一下。

新建工程

新建一个叫demo-springcloud的工程,选择好工程位置(Location)、构建工具(Gradle)、JDK、gradle版本、包名(GroupId),如下图

Spring Cloud 5.1: 将多工程整合成多模块工程-Eureka注册中心_gradle

创建好的工程长这样:

Spring Cloud 5.1: 将多工程整合成多模块工程-Eureka注册中心_spring cloud_02

配置Eureka注册中心子模块

右键工程,选择 新建 -> 模块 

Spring Cloud 5.1: 将多工程整合成多模块工程-Eureka注册中心_spring cloud_03

给模块起名eureka,如下图

Spring Cloud 5.1: 将多工程整合成多模块工程-Eureka注册中心_gradle_04

模块创建好后,可以看到工程中多了一个eureka模块

Spring Cloud 5.1: 将多工程整合成多模块工程-Eureka注册中心_gradle_05

这里需要注意,工程下和模块下分别有一个src目录和build.gradle文件,由于我们不会在工程中编码,所有的工程文件都分布在各个模块中,所以,工程中的src目录是无用目录,这里一定要特别注意

Spring Cloud 5.1: 将多工程整合成多模块工程-Eureka注册中心_spring cloud_06

接下来怎么搞?我们来先解决有没有的问题,再解决好不好的问题。其实只要把原来第一篇博文中的eureka注册中心工程配置原封不动拿来就好了。

配置及代码迁移

build.gradle

将原eureka工程中build.gradle文件内容拷贝到这个新工程的eureka模块的build.gradle文件中,我这里因为变换了包名,所以改了包名,其他没动。

plugins {
    id 'java'
    // spring 依赖管理插件
    // https://plugins.gradle.org/plugin/io.spring.dependency-management
    id 'io.spring.dependency-management' version '1.1.0'
    // spring boot系列版本,不需最新,与mavenBom依赖的版本相同就好
    id 'org.springframework.boot' version '3.2.6'

}

group = 'com.hao1st'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

repositories {
    mavenCentral()
}

ext {
    set('springCloudVersion', "2023.0.2")
}
dependencyManagement {
    // 导入spring cloud 的mavenBom,最新版本2023.0.2
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

dependencies {
    // --- Spring cloud starter ---
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
    // --- Spring boot starter ---
    implementation 'org.springframework.boot:spring-boot-starter-security'

    // --- Other dependencies --
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
    useJUnitPlatform()
}

代码文件

待依赖下载完毕后,将原工程的对应位置的文件拷贝过来,我这里改了包名,所以包名也做了相应修改。

左边是原工程,右边是新的模块。

包名就是创建模块时的groupId.artifactId,用这个路径作为程序的根路径,启动类EurekaApplication放在根路径下,命名规则是{artifactId}Application

Spring Cloud 5.1: 将多工程整合成多模块工程-Eureka注册中心_gradle_07Spring Cloud 5.1: 将多工程整合成多模块工程-Eureka注册中心_spring cloud_08

application.yml

最后,不要忘了将原工程的配置文件拷过来,什么都不需要动。

Spring Cloud 5.1: 将多工程整合成多模块工程-Eureka注册中心_spring cloud_09

启动

到这就算迁移完了,可以启动模块,在浏览器中访问localhost:9000,可以看到eureka界面。

Spring Cloud 5.1: 将多工程整合成多模块工程-Eureka注册中心_spring cloud_10