maven工程模塊化

前言

項目的模塊化有利於任務分工,後期維護,易擴展,模塊還能夠獨立成服務單獨部署等;前端

建立packaging類型爲POM的父項目

我用的maven插件是m2e,相信大部分人在eclipse裝的也是m2e插件;廢話不說,直接開始:git

菜單選擇新建maven project,注意選擇建立一個簡單工程,以下圖紅圈所示,由於咱們要建立的是packaging類型爲pom的maven項目,自帶的archetype裏貌似沒有對應的類型,反正我是沒找到。github

接着點擊next,在packaging選項裏選擇pom,而後輸入必要的信息便可,以下圖:web

這時候咱們的pom.xml文件是這樣的:spring

<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>cn.edu.hdu.mm</groupId>
  <artifactId>multi-module</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>multi-module</name>
  <description>multi module projects.</description>
</project>

建立各個子模塊

這裏打算簡單的建立一個web項目做爲示例,按層劃分;其實複雜點的項目是能夠劃分紅多個子系統模塊、多個服務模塊,模塊之間的通訊能夠經過jms、webservice等方式。數據庫

那麼,咱們就開始簡單的建立common,dao,service,web幾個模塊吧, 這裏,除了web模塊的packaging類型是war,其它的都是jar,也就是說,在建立這些模塊的時候,web模塊選擇的archetype爲webapp,其它的選quickstart便可;apache

鼠標右鍵父工程,選擇建立maven module;瀏覽器

建立完各個模塊以後,父模塊與子模塊的POM配置文件以下,很好理解:tomcat

父模塊POM配置:mybatis

<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>cn.edu.hdu.mm</groupId>
  <artifactId>multi-module</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>multi-module</name>
  <description>multi module projects.</description>
  <modules>
      <module>multi-module-common</module>
      <module>multi-module-dao</module>
      <module>multi-module-service</module>
      <module>multi-module-web</module>
  </modules>
</project>

其中的一個子模塊POM配置:

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>cn.edu.hdu.mm</groupId>
    <artifactId>multi-module</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>multi-module-common</artifactId>
  <name>multi-module-common</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

配置各個模塊之間的依賴關係

在這個demo中,模塊之間的依賴關係以下:

web依賴service,service依賴dao,dao依賴common模塊;

配置依賴關係很簡單,好比咱們須要在dao模塊裏配置其依賴common模塊,只需在pom添加以下代碼片斷,跟平時的添加依賴同樣:

    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>multi-module-common</artifactId>
        <version>${project.version}</version>
    </dependency>

注意這裏的${project.groupId}和${project.version}指的是本模塊的groupId和version,由於該模塊和multi-module-common模塊的共同父模塊爲multi-module,其groupId和version都繼承自multi-module,因此咱們這裏直接寫本模塊的groupId和version便可。

開始開發程序

完成以上配置後,就能夠開始開發咱們的程序了,往common模塊寫一些公共的東西,dao模塊訪問數據源,service模塊業務需求,web能夠寫一些jsp,action、controller等;

這裏,我簡單的寫了個spring + spring mvc + mybatis的demo,添加了一個用戶增刪改查模塊,前端頁面就沒寫了~代碼見最後的連接。

工程目錄大體以下:

運行war包,調試等

代碼寫完以後,添加數據庫(腳本在工程裏),而後能夠在父工程的pom.xml文件裏添加tomcat7-maven-plugin插件配置,右鍵執行tomcat:run命令,運行war包,也能夠右鍵調試工程,debug As...

執行命令,可看到以下日誌,經過日誌能夠看到具體的執行過程:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] multi-module
[INFO] multi-module-common
[INFO] multi-module-dao
[INFO] multi-module-service
[INFO] multi-module-web Maven Webapp
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building multi-module 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> tomcat-maven-plugin:1.1:run (default-cli) @ multi-module >>>
[INFO]
[INFO] <<< tomcat-maven-plugin:1.1:run (default-cli) @ multi-module <<<
[INFO]
[INFO] --- tomcat-maven-plugin:1.1:run (default-cli) @ multi-module ---
[INFO] Skipping non-war project
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building multi-module-common 0.0.1-SNAPSHOT ..........................................

執行完命令後,瀏覽器地址輸入http://localhost:8080/multi-module-web/user/getUserList.do?pageNo=0&pageSize=5,訪問controller,訪問成功:

Demo源碼

以下是代碼,簡單的寫了下,僅供參考。

https://github.com/peterchenhdu/Demos/tree/master/multi-module

相關文章
相關標籤/搜索