使用maven構建多模塊項目,分塊開發

 

在多人使用Maven協做開發項目時,尤爲是稍微上點規模的項目,每一個RD的工做都細分到具體功能和模塊,有些模塊甚至還要單獨部署。git

咱們假設有這樣一個商城項目,包括如下幾個模塊:github

  • 商城前臺(shop)
  • 管理後臺(admin)
  • 數據庫交互模塊(dao)
  • 通用業務模塊(service)
  • 接口模塊(api)
  • 通用工具(util)

其中shop和admin須要單獨部署,dao、service、util你可能想要一些經驗豐富的人來維護,若是使用一個應用來管理的話,全部的功能和模塊都會耦合在一塊兒,全部人均可以隨意修改代碼,這顯然不是咱們所指望的。web

並且使用一個應用來管理的話,任何一個點的代碼有變動,整個項目就須要從新build,使用模塊化開發的另外一個好處是若是dao的代碼被修改,只須要從新build dao模塊就能夠了。web模塊能夠build成war,dao、service、util等能夠build成jar,只須要配置好依賴關係,就能夠實現模塊間的解耦合。這樣的設計纔是遵循「高內聚,低耦合」設計原則的。數據庫

咱們如何進行模塊化開發呢?

咱們使用上面的例子進行演示,先進行合理的優化,咱們但願dao和service做爲通用的底層工具來使用,把它們合併成一個核心模塊(core),build成core.jar,簡單的Maven模塊化項目結構以下:api

---------- mall //頂級項目 |------ pom.xml //packaging = pom |------ mall-util //通用工具 | |--- pom.xml //packaging = jar |------ mall-core //核心模塊 | |--- pom.xml //packaging = jar |------ mall-web-api //接口模塊 | |--- pom.xml //packaging = war |------ mall-web-admin//管理後臺 | |--- pom.xml //packaging = war |------ mall-web-shop//商城前臺 | |--- pom.xml //packaging = war 

 

這些模塊中api、admin、shop均是能夠單獨部署的web應用,相互之間沒有依賴關係,但都依賴於core模塊,而core模塊依賴於util模塊。接下來咱們按照上述肯定的結構來搭建項目結構。ruby

使用IDEA來建立Maven多模塊項目

1、建立一個普通Maven項目

  1. New Project

image

  1. 填寫基本信息,這裏使用ipr做爲項目描述文件

image

  1. 普通Maven項目不須要使用Maven模板搭建

image

2、給Maven項目添加模塊

  1. New Module

image

  1. 填寫基本信息,jar項目一樣不須要使用Maven模板搭建

image

  1. 這個時候就能夠看到,咱們所添加的module已經被引入到parent的pom文件裏了
<groupId>com.mall</groupId> <artifactId>mall</artifactId> <packaging>pom</packaging> //打包方式爲pom <version>1.0-SNAPSHOT</version> <modules> <module>mall-util</module> </modules>
  1. 變動util模塊的構建方式爲jar
<parent> <artifactId>mall</artifactId> <groupId>com.mall</groupId> <version>1.0-SNAPSHOT</version> </parent> <packaging>jar</packaging> //打包方式爲jar <artifactId>mall-util</artifactId>

3、給Maven項目添加web模塊

  1. 建立一個module,並選中「Create from archetype」選項,同時maven模板選擇webapp

image

  1. 接下來耐心的等待maven幫你建立好module,模塊信息已經被添加
<modules>
    <module>mall-util</module> <module>mall-web-admin</module> </modules>

目錄結構以下:app

image

pom:webapp

<parent> <artifactId>mall</artifactId> <groupId>com.mall</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>mall-web-admin</artifactId> <packaging>war</packaging> <name>mall-web-admin</name> <url>https://github.com/beiyoufx</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>mall-web-admin</finalName> </build>

4、添加模塊間的依賴關係

  1. 增長core與util的依賴

image

  1. 增長admin與core的依賴關係

image

admin與core、util的依賴鏈maven

image

多模塊項目的構建與發佈

打包

image

全部在root項目中進行的構建都會傳遞到模塊中,例如root中的package會打包整個項目,當文件有變更時會進行從新聚合,其餘命令同理。模塊中的package只會打包當前模塊。ide

使用source:jar命令會將源碼打包。

發佈

web模塊能夠單獨部署也可聚合部署。

 

 

相關文章
相關標籤/搜索