SSM(十) 項目重構-互聯網項目的Maven結構

互聯網項目的maven.jpg

前言

好久沒有更新博客了,以前定下週更逐漸成了月更。怎麼感受像我追過的一部動漫。
這個博文其實很早就想寫了。
以前全部的代碼都是在一個模塊裏面進行開發,這和maven的理念是徹底不相符的,最近硬是抽了一個時間來對項目的結構進行了一次重構。git

先來看看此次重構以後的目錄結構github

1.jpg

爲何須要分模塊

至於爲何要分模塊呢?web

咱們設想一個這樣的場景:
在如今的互聯網開發中,會把一個很大的系統拆分紅各個子系統用於下降他們之間的耦合度。spring

在一個子項目中一般都會爲APIWEBService等模塊。
並且當項目夠大時,這些一般都不是一我的能完成的工做,須要一個團隊來各司其職。api

想象一下:當以前全部的項目都在一個模塊的時候,A改動了API,須要Deploy代碼。而B也改動了service的代碼,但並無徹底作完。因此A在提交build的時候就會報錯maven

並且在整個項目足夠大的時候,這個build的時間也是很影響效率的。工具

但讓我將各個模塊之間分開以後效果就不同了。我修改了API我就只須要管個人就行,不須要整個項目進行build開發工具

並且當有其餘項目須要依賴我這個API的時候也只須要依賴API便可,不用整個項目都依賴過去。ui

各個模塊的做用

來看下此次我所分的模塊。spa

ROOT

這是整個項目的根節點。
先看一下其中的pom.xml

<groupId>com.crossoverJie</groupId>
    <artifactId>SSM</artifactId>
    <packaging>pom</packaging>
    <version>2.0.0</version>

    <modules>
        <module>SSM-API</module>
        <module>SSM-BOOT</module>
        <module>SSM-SERVICE</module>
        <module>SSM-WEB</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>4.1.4.RELEASE</spring.version>
        <jackson.version>2.5.0</jackson.version>
        <lucene.version>6.0.1</lucene.version>
    </properties>


    <dependencyManagement>

        <dependencies>
            <dependency>
                <groupId>com.crossoverJie</groupId>
                <artifactId>SSM-API</artifactId>
                <version>2.0.0</version>
            </dependency>
         </dependencies>
    </dependencyManagement>複製代碼

我截取了其中比較重點的配置。

因爲這是父節點,因此個人packag類型使用的是pom
其中分別有着四個子模塊。

其中重點看下<dependencyManagement>這個標籤。
若是使用的是IDEA這個開發工具的話是能夠看到以下圖:

2.jpg

標紅的有一個向下的箭頭,點一下就能夠進入子模塊中相同的依賴。
這樣子模塊就不須要配置具體的版本了,統一由父模塊來進行維護,對以後的版本升級也帶來了好處。

SSM-API

接下來看下API這個模塊:

一般這個模塊都是用於定義外部接口的,以及改接口所依賴的一些DTO類
通常這個模塊都是拿來給其餘項目進行依賴,並和本項目進行數據交互的。

SSM-BOOT

BOOT這個模塊比較特殊。
能夠看到這裏沒有任何代碼,只有一個rpc的配置文件。
一般這個模塊是用於給咱們內部項目進行依賴的,並不像上面的API模塊同樣給其餘部門或者是項目進行依賴的。

由於在咱們的RPC調用的時候,用dubbo來舉例,是須要配置所依賴的consumer

但若是是咱們本身內部調用的話咱們就能夠把須要調用本身的dubbo服務提供者配置在這裏,這樣的話咱們本身調用就只須要依賴這個BOOT就能夠進行調用了。

哦對了,BOOT同時還會依賴API,這樣才實現了只依賴BOOT就能夠調用本身內部的dubbo服務了。
以下所示:

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.crossoverJie</groupId>
            <artifactId>SSM-API</artifactId>
        </dependency>

    </dependencies>複製代碼

SSM-SERVICE

SERVICE模塊就比較好理解了。
是處理具體業務邏輯的地方,也是對以前的API的實現。

一般這也是一個web模塊,因此個人pom類型是WAR

SSM-WEB

其實WEB模塊和SERVICE模塊有點重合了。一般來講這個模塊通常在一個對外提供http訪問接口的項目中。

這裏只是爲了展現項目結構,因此也寫在了這裏。

他的做用和service差很少,都是WAR的類型。

總結

此次沒有實現什麼特別的功能,只是對一些尚未接觸過這種項目結構開發的童鞋能起到一些引導做用。

具體源碼還請關注個人github

項目地址:github.com/crossoverJi…

我的博客地址:crossoverjie.top

GitHub地址:github.com/crossoverJi…

相關文章
相關標籤/搜索