SpringCloud多模組專案搭建
阿新 • • 發佈:2018-12-10
多模組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-project
,GroupId
和AritifactId
的配置如下:
構建子模組
子模組專案創建於主工程之內,建立過程如下:
右鍵點選專案名稱-->New-->Module
選中Spring Initializr-->Next
-->Group={主工程的GroupId}-->Aritifact={當前模組的ArtifactId}
、-->Next-->Next-->Finish
本示例中,子模組的名稱為module-a
module-b
,Group
和Aritifact
的配置如下:
通過同樣的方式建立子模組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
的版本 - 配置微服務的一些基本元件,如
actuator
、eureka
、web
和test
。 - 配置編碼方式
- 配置
java
版本 - 配置子模組
編輯子模組pom.xml
子模組pom.xml
可以引用主工程pom.xml
的依賴關係,所以也對其進行配置,其中module-a
的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.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
從主工程
中繼承了一系列依賴關係,如actuator
、eureka
、web
和test
。
並且,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!";
}
}
說明配置成功。