1. 程式人生 > >SpringCloud多模組專案搭建

SpringCloud多模組專案搭建

多模組Maven專案

為了便於統一的版本維護和管理,經常會用到Maven的多模組模式。

本文以以下模組結構為例,對如何建立多模組Maven專案進行描述。 這裡寫圖片描述

構建主工程

首先建立一個Maven專案作為主工程,型別無所謂,這裡建議使用maven-archetype-quickstart骨架,建立過程如下:

  • File-->New-->Project
  • -->Maven-->Create from archetype-->maven-archetype-quickstart-Next
  • -->GroupId={你的GroupId}-->AritifactId={你的ArtifactId}
  • -->Next-->Next-->Finish-->New Whindow

本示例中,我的主專案叫main-projectGroupIdAritifactId的配置如下: 這裡寫圖片描述

構建子模組

子模組專案創建於主工程之內,建立過程如下:

  • 右鍵點選專案名稱-->New-->Module
  • 選中Spring Initializr-->Next
  • -->Group={主工程的GroupId}-->Aritifact={當前模組的ArtifactId}
  • -->Next-->Next-->Finish

本示例中,子模組的名稱為module-a

module-bGroupAritifact的配置如下: 這裡寫圖片描述

通過同樣的方式建立子模組module-b

優化結構

完成上述的主工程以及兩個子模組建立之後,專案結構檢視如下: 這裡寫圖片描述 

下面對這個多模組專案進行優化。

刪除主工程多餘目錄

並不需要在主工程進行任何程式碼開發,所以刪除其src目錄。

編輯主工程pom.xml

作為主工程,其pom.xml可以作為其他子模組工程的基準依賴,方便進行統一的版本管理。

將主工程pom.xml修改如下:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>pers.hanchao</groupId>
    <artifactId>main-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>main-project</name>

    <!--子模組工廠配置-->
    <modules>
        <module>module-a</module>
        <module>module-b</module>
    </modules>

    <!--Spring Boot配置-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <!--配置引數-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Dalston.SR1</spring-cloud.version>
    </properties>

    <dependencies>
        <!--Spring Boot 執行器元件-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--Spring Cloud 服務註冊元件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
        <!--Spring Boot Web元件-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--Spring Boot 測試元件-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!--Spring Cloud 版本序列配置-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!--倉庫配置-->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>

在上述的pom.xml檔案中,主要做了以下幾件事:

  • 配置Spring Boot的版本
  • 配置Spring Cloud的版本
  • 配置微服務的一些基本元件,如actuatoreurekawebtest
  • 配置編碼方式
  • 配置java版本
  • 配置子模組

編輯子模組pom.xml

子模組pom.xml可以引用主工程pom.xml的依賴關係,所以也對其進行配置,其中module-apom.xml配置如下:

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

    <groupId>pers.hanchao.mainproject</groupId>
    <artifactId>module-a</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>module-a</name>
    <description>Demo project for Spring Cloud Module A</description>

    <!--父工程的依賴-->
    <parent>
        <groupId>pers.hanchao</groupId>
        <artifactId>main-project</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <!--子模組的個性化依賴-->
    <dependencies>

    </dependencies>

</project>

從上面的配置可以得知,module-a主工程中繼承了一系列依賴關係,如actuatoreurekawebtest

並且,module-a還可以對自己模組特有的一些依賴進行配置。

執行測試

改寫module-a的啟動類ModuleAApplication.java,如下:

@RestController
@SpringBootApplication
public class ModuleAApplication {

    public static void main(String[] args) {
        SpringApplication.run(ModuleAApplication.class, args);
    }

    @GetMapping("/hi")
    public String hi(){
        return "Hello World!";
    }
}

說明配置成功。