maven多模塊項目聚合

參考文檔:前端

http://kyfxbl.iteye.com/blog/1680045
http://blog.csdn.net/wanghantong/article/details/36427411
http://my.oschina.net/lujianing/blog/354121

 

最近在整理公司軟件項目工程結構,最初的設計模塊間耦合度過高,過多的公共service與業務邏輯強相關。以致於後期要作集羣系統的工做難以展開,因而這個時候選擇重構是惟一的辦法了。web

很榮幸這個光榮而又艱鉅的任務被老大交給我和另一個有5年JAVA經驗的「老司機」,因爲以前沒有幹太重構這種高端大氣的活,此次也是抱着打打醬油瞻仰學習的態度來的,想一想還有點小激動。apache

惋惜人算不如天算,跟我合做的搭檔在接手2天后就辭職走人了,辭職的緣由我是不得而知。但有個尷尬的問題就是:活誰幹?這真使人絕望。。。api

往事休要再提,反正又不是第一次被坑了,生活還得繼續。服務器

 

重構的第一項工做是要先整出來一個新的工程結構,這裏簡單記錄下,使用maven構建項目框架的過程。app

基礎結構以下:負載均衡

project
    |--business  (核心業務)
        |--business-api
        |--business-service
        |--business-message
        |--business-dao
        |--business-web
    |--common  (公共組件、服務、常量)
        |--common-component
            |--common-component-...
        |--common-service
        |--common-constants
        |--common-...
    |--management  (管理臺)
        |--management-...
    |--taskserver (定時任務、批處理)
    |--msgserver  (消息隊列)

模塊定義:框架

  business是整個工程的核心模塊,它提供了對各終端(iOS、Android、Web&PC)的全部服務。異步

  business-api做爲核心服務的提供者,基本上全部的業務操做都由它來完成,以war工程獨立運行。集羣方式下能夠多部署幾個api,在前端作好負載均衡便可。maven

  business-service 和 business-dao(mapper&entity) 是api的具體實現,這2者以jar包的形式供api依賴調用。

  business-message裏存放了對外的接口契約(intf)、請求(request)和響應體(response),以jar包發行,方便供第三方或其餘業務模塊調用。

  business-web是咱們的前端服務器,主要完成渲染和呈現的功能。一些像報表這樣輕業務的功能能夠在這裏獨立完成。以war包形式發行,支持集羣部署。

  common是公共組件部分,一些常量或第三方接入的工做能夠在這裏實現。

  management是管理臺,主要提供一些對業務編排、配置的的功能。

  taskserver批處理或定時任務服務器,獨立運行。

  msgserver消息隊列服務器,主要用來協助核心服務模塊完成一些異步調用的工做。如發短信、消息推送等功能。

 

建立maven工程:

先建立一個父工程project用來作項目聚合

建立business,這裏選擇maven module或者maven project均可以,只要類型是pom就能夠。我喜歡平行結構這裏選擇maven project。大致步驟和上面雷同,惟獨最後一步:

在business下面建立2個war和3個jar模塊(maven module):

創建完成以下:

其餘模塊的創建過程跟這裏大同小異,再次略過。

 

 依賴關係:

 衆所周知maven的使用pom.xml來完成依賴管理,咱們能夠經過圖形化或者直接修改pom.xml的方式完成配置。

添加依賴後生成的pom.xml以下:

<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>
  <parent>
    <groupId>com.lichmama.project.business</groupId>
    <artifactId>business</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>com.lichmama.project.business.api</groupId>
  <artifactId>business-api</artifactId>
  <packaging>war</packaging>
  <dependencies>
      <dependency>
          <groupId>com.lichmama.project.business.service</groupId>
          <artifactId>business-service</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      </dependency>
      <dependency>
          <groupId>com.lichmama.project.business.dao</groupId>
          <artifactId>business-dao</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      </dependency>
      <dependency>
          <groupId>com.lichmama.project.business.message</groupId>
          <artifactId>business-message</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      </dependency>
  </dependencies>
</project>

(未完待續。。。)

相關文章
相關標籤/搜索