程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> maven工程模塊化,maven模塊化

maven工程模塊化,maven模塊化

編輯:JAVA綜合教程

maven工程模塊化,maven模塊化


前言

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

創建packaging類型為POM的父項目

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

菜單選擇新建maven project,注意選擇創建一個簡單工程,如下圖紅圈所示,因為我們要創建的是packaging類型為pom的maven項目,自帶的archetype裡貌似沒有對應的類型,反正我是沒找到。

接著點擊next,在packaging選項裡選擇pom,然後輸入必要的信息即可,如下圖:

這時候我們的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>
  <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即可;

鼠標右鍵父工程,選擇創建maven module;

創建完各個模塊之後,父模塊與子模塊的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>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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved