springboot建立多模組modules應用demo
為什麼要使用多模組開發
在平時的開發中,為了便於後期的維護,我們一般採用多模組開發。最常用的分層就是:domain、dao、service、web層。分層之後,各層級模組的職責功能明確,後期維護的時候會輕鬆許多。
多模組開發的核心:pom
pom: Project Object Model 專案物件模型.pom檔案都是對應一個專案。
而我們這裡要說的多模組,也是根據pom檔案進行的關聯。
<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>com.demo</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <build/> </project>
一個基本的pom檔案主要引數有:
project: pom.xml的頂級元素
modelVersion: 表示pom使用哪個版本的物件模型
groupId: 建立這個專案的團隊或組織標識
artifactId: 專案的名稱
version: 版本
packaging: 打包型別,如果是父專案,應為pom,子專案可為jar,war等
多模組專案的建立示例
(1)使用myeclipse新建一個maven專案
這個專案userParent是作為父專案,所以設定packaging為pom.
建立成功後顯示為:
刪除src資料夾
(2)建立子專案
在父專案上右鍵:New -> Maven Module
選擇packaging為預設的jar,父專案已預設選定
照此步驟,建立userDao,userService,userWeb專案
得到專案結構是:
(3)子模組之間依賴關係繫結
在實際專案中,各個子模組之間不是完全獨立的,可能會有一些依賴關係。比如userWeb會依賴userService,userDao,userDomain.而userDao依賴userDomain。那這些依賴關係,我們需要在pom檔案中進行配置,讓程式知道它們的繫結關係。
比如在userWeb的pom檔案中的繫結關係:
與此類似,將userService和userDao之間的繫結關係在pom檔案中建立起來<dependency> <groupId>com.xl</groupId> <artifactId>userService</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.xl</groupId> <artifactId>userDao</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.xl</groupId> <artifactId>userDomain</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
(4)啟動測試
啟動userWeb中的App類,瀏覽器測試。
多模組專案的打包示例
打包測試的時候,遇到了很多問題。
在父專案的pom中需配置
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests> <!--預設關掉單元測試 -->
</configuration>
</plugin>
</plugins>
</build>
在userWeb的pom中配置
<build>
<plugins>
<plugin>
<!-- The plugin rewrites your manifest -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration><!-- 指定該Main Class為全域性的唯一入口 -->
<mainClass>org.userWeb.App</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal><!--可以把依賴的包都打包到生成的Jar包中 -->
</goals>
<!--可以生成不含依賴包的不可執行Jar包 -->
<!-- configuration> <classifier>exec</classifier> </configuration> -->
</execution>
</executions>
</plugin>
</plugins>
</build>
如果這裡不配置,在啟動時候會報錯:
PS F:\workspace\userParent\userWeb\target> java -jar .\userWeb-0.0.1-SNAPSHOT.jar
.\userWeb-0.0.1-SNAPSHOT.jar中沒有主清單屬性
配置好了之後,在userParent目錄下,執行mvn install package
在userParent的userWeb/target/下執行 java -jar .\userWeb-0.0.1-SNAPSHOT.jar
那整個平臺就執行起來了。