IDEA中创建Spring Cloud微服务项目步骤

06-01 1241阅读

步骤 1:使用 Spring Initializr 创建父项目

打开IntelliJ IDEA,选择 File > New > Project。

选择 Spring Initializr 并配置项目信息:

  • Group ID:例如 com.aqian,用于项目的组织标识。
  • Artifact ID:例如 cangqiong(即父项目名称),用于项目的唯一标识。
  • Packaging:选择 pom,确保父项目仅作为架构项目,无需生成 src 文件夹。
  • Java version:选择您项目所需的 Java 版本。

    选择项目依赖:勾选所有子模块需要的公共依赖(例如 Spring Boot Web、Spring Data JPA、Spring Boot DevTools 等)。这样公共依赖会添加到父项目的 pom.xml 中,所有子模块均能继承。

    点击 Finish,完成父项目的创建。

    步骤 2:删除父项目中不需要的文件夹

    删除自动生成的 src 文件夹,因为父项目不包含业务代码,仅用作管理。

    .mvn/ + mvnw + mvnw.cmd 是一套的:

    它们是 Maven Wrapper 工具,用来:

    保证团队中所有人用同一版本的 Maven 来构建项目,不用要求本地必须装 Maven。

    父项目中需要保留的 

    文件/目录作用是否需要保留?(父项目)
    .mvn/Maven wrapper 运行环境文件夹✅ 建议保留
    .idea/IDEA 的项目配置文件夹(工作区信息)🚫 建议 不加入版本控制
    .gitignoreGit 忽略文件列表✅ 一般要保留
    mvnw, mvnw.cmdMaven wrapper 脚本(用于执行项目时不依赖本机 Maven)✅ 建议保留

     子项目中不需要保留的

    文件/目录子模块是否需要?
    .mvn/❌ 不需要
    .idea/❌ 不建议版本控制
    mvnw / mvnw.cmd❌ 不需要
    .gitignore⭕ 可选(一般只在父项目有就够)

    🚨 注意:

    • 你只需要在父项目中维护 Maven Wrapper 和 GitIgnore 文件

    • 子模块只需要目录结构 + pom.xml,不要加这些项目根配置

      配置父项目 pom.xml 文件:确保 packaging 设置为 pom,并在 中添加通用依赖。

      com.aqian
      biguo
      0.0.1-SNAPSHOT
      pom
      
          
              
              
                  org.springframework.boot
                  spring-boot-starter-web
              
              
                  org.springframework.boot
                  spring-boot-starter-data-jpa
              
              
          
      
      
          
              
              
                  org.springframework.boot
                  spring-boot-maven-plugin
              
          
      
      

      如果你打算使用 Nacos 注册中心、Nacos 配置中心、Sentinel 等 Spring Cloud Alibaba 提供的组件,必须单独引入 Spring Cloud Alibaba 的依赖,因为这些组件并不包含在 Spring Cloud 官方的 starter 中。 

      IDEA中创建Spring Cloud微服务项目步骤
      (图片来源网络,侵删)
       
              
                  com.alibaba.cloud
                  spring-cloud-alibaba-dependencies
                  2022.0.0.0
                  pom
                  import
              

      步骤 3:为父项目添加子模块

      右键父项目,选择 New > Module。

      选择 Spring Initializr 作为模块类型,然后配置子模块信息:

      IDEA中创建Spring Cloud微服务项目步骤
      (图片来源网络,侵删)
      • Group ID:与父项目相同,例如 com.aqian。
      • Artifact ID:例如 module1(子模块名称)。
      • 不勾选公共依赖(如 Spring Boot Web、Data JPA 等),因为这些依赖已经在父项目中配置。

        完成创建后,IDEA会生成一个包含 src 文件夹和 pom.xml 的子模块。

        步骤 4:配置子模块的application.properties 并 配置子模块的pom.xml

         每个微服务是否需要设置不同端口?

        IDEA中创建Spring Cloud微服务项目步骤
        (图片来源网络,侵删)
        • 是的,在开发环境中,每个微服务必须使用不同的端口,原因如下:

          本地开发时:所有服务都运行在同一台机器上,必须通过不同端口区分

          服务注册:Eureka/Nacos等注册中心需要知道每个服务的准确访问地址(IP+端口)

          配置子模块的 pom.xml:

          • 在 中设置子模块继承父项目配置,并删除 标签,避免路径配置错误。
          • 删除 配置,使子模块直接使用父项目的构建配置,避免冗余。

            示例子模块的 pom.xml:

                4.0.0
                
                    com.aqian
                    cangqiong
                    0.0.1-SNAPSHOT
                
                com.aqian
                module1
                0.0.1-SNAPSHOT
                
                    
                
            
            

            重复以上步骤,为其他模块创建并配置 pom.xml,确保所有子模块继承父项目。

            • relativePath 默认值: 如果省略 relativePath,默认会向上查找父目录的 pom.xml。
            • 如果父项目和子项目不在同一物理目录结构下,可能需要手动设置 relativePath。

              步骤 5:在父项目 pom.xml 中添加 并 修改父模块的

              打开父项目的 pom.xml 文件,确保每个子模块都在 标签中。如果没有自动添加,可以手动配置,如下所示:

                  module1
                  module2
                  
              
              

              父模块的 packaging 必须是 pom 类型 

              • 在 Maven 多模块项目中,父模块(Parent Module)本身通常不包含可执行代码或资源文件,而是用来聚合和管理子模块。
              • 由于父模块仅作为容器管理子模块,它的 packaging 类型必须是 pom。
                com.aqian
                    mychinchin
                    0.0.1-SNAPSHOT
                    pom 

                步骤 6:构建和测试项目

                在Maven工具窗口(通常位于右侧)点击 Reload All Maven Projects,确保所有子模块和依赖加载到位。

                使用 mvn install 命令:在父项目的根目录下运行 mvn install 命令,这会构建父项目及其所有子模块,并将生成的构建工件(如 .jar 文件)安装到本地Maven仓库。

                mvn install 作用:

                mvn install 命令会执行项目的完整构建流程,包括以下步骤:

                通过 mvn install,所有模块的 .jar 文件将会保存在本地仓库,便于子模块间的相互依赖和项目集成。

                • 编译:将 Java 源代码编译成字节码(.class 文件)。
                • 测试:执行单元测试并生成测试报告。
                • 打包:将编译和测试后的代码打包成 .jar 文件(或其他格式,取决于 pom.xml 中的配置)。
                • 安装:将打包生成的 .jar 文件安装到本地Maven仓库(默认路径为 ~/.m2/repository),以便其他项目或模块可以引用这些构建工件。

                  公共模块(common-core)被其他子模块引入的正确流程

                  (1)确保公共模块的 pom.xml 配置正确

                  • 设置打包方式为 jar(默认就是 jar,但最好显式声明):

                        com.yourcompany
                        parent-project
                        1.0.0
                    
                    jar

                    打包方式:jar vs pom

                    jar(默认值)

                    • 用途:将模块编译为Java库(JAR文件),包含编译后的类文件、资源文件等。

                    • 典型场景:

                      • 公共工具模块(如common-core)。

                      • 业务逻辑模块(需被其他模块依赖的代码)。

                      • 示例配置:

                        jar  

                        pom

                        • 用途:仅作为父模块或聚合模块,不生成实际的JAR/WAR文件,仅用于管理子模块或统一依赖版本。

                        • 典型场景:

                          • 多模块项目的根模块(父POM)。

                          • BOM(Bill of Materials)项目,如Spring Cloud的依赖管理包。

                          • 示例配置:

                            pom
                            • 继承父模块(如果项目是多模块结构):

                            • 禁用 spring-boot-maven-plugin(避免尝试打包成可执行 JAR):

                                  
                                      
                                          org.springframework.boot
                                          spring-boot-maven-plugin
                                          
                                              true 
                                          
                                      
                                  
                              

                              (2) 构建公共模块并安装到本地 Maven 仓库

                              • 进入公共模块的根目录:

                                cd common-core
                              • 执行 Maven 安装:

                                mvn clean install

                                成功后,common-core 的 JAR 包会被安装到本地 Maven 仓库(~/.m2/repository/com/yourcompany/common-core/1.0.0/)。

                                (3)在其他模块中引入该依赖

                                在需要引用 common-core 的模块(如 service-a)的 pom.xml 中添加:

                                    
                                        com.yourcompany
                                        common-core
                                        1.0.0 
                                    
                                

                                步骤7:配置.gitignore文件

                                 .gitignore文件内部用来规定哪些文件不会被提交到git仓库。

                                .gitignore 文件用于指定应被 Git 忽略的文件或目录,其语法规则如下:

                                1.空行:被忽略,可用于分隔不同的规则块。

                                2.注释:以 # 开头的行被视为注释。

                                # 这是一个注释
                                

                                3.通配符:

                                *(星号):匹配零个或多个任意字符,但不匹配路径分隔符 /。

                                *.log  # 匹配所有以 .log 结尾的文件
                                

                                ?(问号):匹配任意单个字符。

                                config?.yml  # 匹配 config1.yml、configA.yml 等
                                

                                [](方括号):匹配方括号内的任意一个字符。

                                test[12].txt  # 匹配 test1.txt 和 test2.txt
                                

                                **(双星号):匹配任意层级的目录。

                                **/logs  # 匹配任意位置的 logs 目录
                                

                                4.目录匹配:

                                • 以 / 结尾:表示匹配目录。

                                  temp/  # 匹配 temp 目录
                                  
                                • 以 / 开头:表示从仓库根目录开始匹配。

                                  /build  # 仅匹配仓库根目录下的 build 文件或目录
                                  

                                  5.取反匹配:以 ! 开头的模式表示例外,即不忽略匹配该模式的文件或目录。

                                  *.log
                                  !important.log  # 忽略所有 .log 文件,但不忽略 important.log
                                  

                                  注意:如果父目录已被忽略,则子文件或目录即使使用取反模式也无法被包含。

                                  6.转义字符:如果文件名中包含特殊字符(如 #、! 等),可使用反斜杠 \ 进行转义。

                                  \#important.log  # 匹配文件名为 #important.log 的文件
                                  

                                  步骤8:为子模块配置SDK

                                  多模块项目的配置缺失:多模块项目中,子模块的语言级别和 SDK 设置可能不会自动继承父项目配置,因此需要手动确认。

                                  Project SDK:指定了项目使用的 JDK 版本,它提供了 Java 编译器、运行时以及核心库(如 java.lang.String 等基础类)。如果没有指定正确的 SDK,IDE 就无法找到这些核心库,从而导致无法解析符号的错误。 

                                  如何在 IntelliJ IDEA 中设置

                                  具体操作如下:

                                  1.配置项目级别的 SDK 和语言级别

                                  • 打开 File > Project Structure > Project。
                                  • 在 Project SDK 下拉菜单中,选择适合的 JDK 版本。如果列表中没有目标 JDK,可以通过 New 按钮添加。
                                  • 在 Project language level 下拉菜单中,选择匹配的 Java 语言级别。

                                    2.配置模块级别的 SDK 和语言级别

                                    • 进入 File > Project Structure > Modules。
                                    • 选择子模块,在右侧设置 SDK 为项目 SDK。
                                    • 在 Language Level 下拉菜单中,确保选择了与项目兼容的语言级别。

                                      步骤9:提交到Gitee远程仓库

                                      • 本地分支:在你的本地 Git 仓库中创建和管理的分支。每个本地分支有独立的开发历史和变更记录。
                                      • 远程分支:指的是在远程仓库(如 GitHub、Gitee 等)中的分支。远程分支通常与团队其他成员共享,用于协作开发。
                                        • 推送(Push):将本地分支的更新推送到远程分支,使团队成员看到你的改动。
                                        • 拉取(Pull):将远程分支的更改拉到本地分支,确保自己的代码与团队同步。

                                          在 IntelliJ IDEA 中提交到 Gitee 仓库时,不建议直接使用 Gitee 账户的用户名和密码。Gitee 已弃用简单的账户密码方式,推荐使用 访问令牌(Access Token) 来替代密码进行身份验证。

                                          使用 Gitee 的访问令牌(Access Token)

                                          为什么使用访问令牌而非账户密码?

                                          使用访问令牌比直接使用账户密码更安全,而且 Gitee 也不再允许简单密码的远程认证,因此 访问令牌 是推送和拉取代码的推荐方式。 

                                          1. 生成 Gitee 访问令牌

                                          • 登录您的 Gitee 账号。
                                          • 点击右上角头像,选择“设置”。
                                          • 在左侧菜单中,选择“安全设置”。
                                          • 找到“私人令牌”部分,点击“生成新令牌”。
                                          • 为令牌命名,选择所需的权限(如 repo、user 等),然后点击“生成”。
                                          • 注意:生成的令牌只会显示一次,请妥善保存。

                                            2. 在 IntelliJ IDEA 中配置 Gitee 账户

                                            • 打开 IntelliJ IDEA,点击菜单栏的 File,选择 Settings(或 Preferences,视操作系统而定)。
                                            • 在设置窗口中,导航到 Version Control > GitHub。
                                            • 点击右侧的“+”按钮,选择“Gitee”。
                                            • 在弹出的对话框中,选择“Log In with Token”。
                                            • 将之前生成的访问令牌粘贴到相应的输入框中,点击“Add Account”。

                                              3. 提交代码到 Gitee 仓库

                                              • 在项目中,右键点击需要提交的文件或目录,选择 Git > Commit。
                                              • 在提交窗口中,填写提交信息,点击“Commit”。
                                              • 提交后,点击“Push”按钮,将代码推送到远程 Gitee 仓库。

                                                最终项目结构

                                                构建完成后,项目结构如下,每个子模块下都会有一个 target 文件夹,用于存放构建结果:

                                                cangqiong/
                                                ├── pom.xml                  # 父项目 POM 文件,包含依赖管理和模块配置
                                                ├── .gitignore               # Git 忽略文件
                                                ├── .idea/                   # IDEA 项目配置
                                                ├── module1/
                                                │   ├── src/                 # 子模块的源代码目录
                                                │   ├── target/              # 子模块的构建结果目录(由mvn install生成)
                                                │   └── pom.xml              # 子模块的 POM 文件,继承父项目
                                                └── module2/
                                                    ├── src/
                                                    ├── target/
                                                    └── pom.xml
                                                

                                                注意

                                                • 每个子模块的 target 文件夹在运行 mvn install 或其他构建命令时自动生成,包含 .class 文件、测试报告、打包的 .jar 文件等。建议在 .gitignore 中忽略 target 文件夹,避免提交到版本控制系统中。

                                                  完整的.gitignore 文件配置如下,其中规定了哪些文件不提交到git仓库。 

                                                  # IntelliJ IDEA 配置
                                                  .idea/
                                                  *.iml
                                                  # Maven 编译输出目录
                                                  **/target/
                                                  # 忽略操作系统生成的临时文件
                                                  .DS_Store
                                                  Thumbs.db
                                                  
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码