首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Spring Boot 多模塊項目搭建實戰:父子工程結構與 Web 模塊創建

     編輯:Java 綜合教學

Spring Boot 多模塊 Maven 項目架構實戰

隨著業務增長,單體項目拆分為多模塊是必經之路。本文演示如何將 Spring Boot 項目重構為「父工程聚合 + 子模塊業務」結構,並創建 web-rest Web 模塊,奠定微服務擴展基礎。

一、父工程 POM 改造:聚合與依賴管理

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="https://maven.apache.org/POM/4.0.0"
         xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.taynio.demo</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>  <!-- 關鍵:聚合工程打包類型為 pom -->

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.3.RELEASE</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <modules>
        <module>web-rest</module>  <!-- 聲明子模塊 -->
    </modules>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

關鍵點:
1. <packaging>pom</packaging> 表示本模塊不產出 JAR,僅聚合子模塊
2. 統一管理 <properties>、<dependencyManagement>、<pluginManagement>,子模塊無版本號引用

二、子模塊 web-rest POM:繼承父工程與引入 Web 依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="https://maven.apache.org/POM/4.0.0"
         xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.taynio.demo</groupId>
        <artifactId>springboot</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>web-rest</artifactId>
    <packaging>jar</packaging>  <!-- 產出可執行 JAR -->

    <dependencies>
        <!-- Web 開發起步依賴:內嵌 Tomcat + Spring MVC + Jackson -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 測試起步依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

三、啟動類:@SpringBootApplication 三合一註解

package com.taynio.demo.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication  // = @Configuration + @EnableAutoConfiguration + @ComponentScan
public class SpringbootWebRestApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootWebRestApplication.class, args);
    }
}

掃描範圍:默認掃描啟動類所在包及子包(com.taynio.demo.springboot),跨包組件需顯式配置 @ComponentScan。

四、目錄結構總覽

springboot (父工程)
├── pom.xml
└── web-rest (子模塊)
    ├── pom.xml
    └── src/main/java/com/taynio/demo/springboot
        └── SpringbootWebRestApplication.java

五、常見問題與驗證

  1. IDEA 未識別子模塊:右鍵父工程 Maven → Reload Project,或手動 File → Project Structure → Modules 添加
  2. 端口衝突:application.yml 配置 server.port: 8081
  3. 啟動報錯「主清單屬性缺失」:確認子模塊引入 spring-boot-maven-plugin 並執行 mvn package

六、擴展建議

  • 新增 service、dao、common 等模塊,父工程 <modules> 追加聲明
  • 引入 spring-cloud-dependencies 統一管理微服務組件版本
  • 使用 maven-enforcer-plugin 強制依賴收斂,避免版本衝突
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved