1. 程式人生 > >Maven學習總結——IDEA中使用Maven構建多模組專案

Maven學習總結——IDEA中使用Maven構建多模組專案

  在平時的Javaweb專案開發中為了便於後期的維護,我們一般會進行分層開發,最常見的就是分為domain(域模型層)、dao(資料庫訪問層)、service(業務邏輯層)、web(表現層),這樣分層之後,各個層之間的職責會比較明確,後期維護起來也相對比較容易,今天我們就是使用Maven來構建以上的各個層。

  專案結構如下:

  mBlindDates
        |----pom.xml
        |----system_domain
                |----pom.xml
        |----system_dao
                |----pom.xml
        |----system_service
                |----pom.xml
        |----system_web
                |----pom.xml

一、建立mBlindDates專案

  建立mBlindDates,用來給各個子模組繼承。

  如下圖所示:




 

  命令執行完成之後可以看到在當前目錄(C:\Documents and Settings\Administrator)生成了mBlindDates目錄,裡面有一個src目錄和一個pom.xml檔案,將src資料夾刪除,然後修改pom.xml檔案,將<packaging>jar</packaging>修改為<packaging>pom</packaging>,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>com.cmbcb</groupId> <artifactId>mBlindDates</artifactId>
<version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <name>mBlindDates</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>
複製程式碼

二、建立sytem_domain模組

在建立好的mBlindDates目錄,右鍵 -> New -> Module:

  跟【建立mBlindDates】中流程一致。

  命令執行完成之後可以看到在mBlindDates目錄中生成了system_domain,裡面包含src目錄和pom.xml檔案。

  同時,在mBlindDates目錄中的pom.xml檔案自動添加了如下內容:

  <modules>
    <module>system_domain</module>
  </modules>

  這時,mBlindDates的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>com.cmbcb</groupId>
  <artifactId>mBlindDates</artifactId>
  <version>1.0-SNAPSHOT</version>
  <modules>
    <module>system_domain</module>
  </modules>
  <packaging>pom</packaging>
  <name>mBlindDates</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>
複製程式碼

  修改system_domain目錄中的pom.xml檔案,把<groupId>com.cmbcb</groupId><version>1.0-SNAPSHOT</version>去掉,加上<packaging>jar</packaging>,因為groupId和version會繼承mBlindDates中的groupId和version,packaging設定打包方式為jar

  修改過後的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">
    <parent>
        <artifactId>mBlindDates</artifactId>
        <groupId>com.cmbcb</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>system_domain</artifactId>
    <packaging>jar</packaging>
    <name>system_domain</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>
複製程式碼

三、建立sytem_dao模組

在建立好的mBlindDates目錄,右鍵 -> New -> Module:

  跟【建立mBlindDates】中流程一致。

  命令執行完成之後可以看到在mBlindDates目錄中生成了system_dao,裡面包含src目錄和pom.xml檔案。如下圖所示: 

  同時,在mBlindDates目錄中的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>com.cmbcb</groupId>
  <artifactId>mBlindDates</artifactId>
  <version>1.0-SNAPSHOT</version>
  <modules>
    <module>system_domain</module>
    <module>system_dao</module>
  </modules>
  <packaging>pom</packaging>
  <name>mBlindDates</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>
複製程式碼

  修改system_dao目錄中的pom.xml檔案,,把<groupId>com.cmbcb</groupId><version>1.0-SNAPSHOT</version>去掉,加上<packaging>jar</packaging>因為groupId和version會繼承mBlindDates中的groupId和version,packaging設定打包方式為jar,同時新增對system_domain模組的依賴,修改後的內容如下:

複製程式碼
<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">
    <parent>
        <artifactId>mBlindDates</artifactId>
        <groupId>com.cmbcb</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>system_dao</artifactId>
    <packaging>jar</packaging>
    <name>system_dao</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>
<!--system-dao需要使用到system-domain中的類,所以需要新增對system-domain模組的依賴-->
<dependency>
            <groupId>com.cmbcb</groupId>
            <artifactId>system_domain</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</project>
複製程式碼

四、建立system_service模組

  在建立好的mBlindDates目錄,右鍵 -> New -> Module:

  跟【建立mBlindDates】中流程一致。

  命令執行完成之後可以看到在mBlindDates目錄中生成了system_service,裡面包含src目錄和pom.xml檔案。如下圖所示:

  同時,在mBlindDates目錄中的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>com.cmbcb</groupId>
  <artifactId>mBlindDates</artifactId>
  <version>1.0-SNAPSHOT</version>
  <modules>
    <module>system_domain</module>
    <module>system_dao</module>
    <module>system_service</module>
  </modules>
  <packaging>pom</packaging>
  <name>mBlindDates</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>
複製程式碼

  修改system_service目錄中的pom.xml檔案,,把<groupId>com.cmbcb</groupId><version>1.0-SNAPSHOT</version>去掉,加上<packaging>jar</packaging>因為groupId和version會繼承mBlindDates中的groupId和version,packaging設定打包方式為jar,同時新增對system_dao模組的依賴system_service依賴system_dao和system_domain,但是我們只需新增system_dao的依賴即可,因為system_dao已經依賴了system_domain。修改後的內容如下:

複製程式碼
<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">
    <parent>
        <artifactId>mBlindDates</artifactId>
        <groupId>com.cmbcb</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>system_service</artifactId>
    <packaging>jar</packaging>
    <name>system_service</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>
<!--
            system-service依賴system-dao和system-domain,
            但是我們只需新增system-dao的依賴即可,因為system-dao已經依賴了system-domain
        -->
<dependency>
            <groupId>com.cmbcb</groupId>
            <artifactId>system_dao</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</project>
複製程式碼

五、建立system_web模組

  在建立好的mBlindDates目錄,右鍵 -> New -> Module:

  如下圖所示:

 




  命令執行完成之後可以看到在mBlindDates目錄中生成了system_web,裡面包含src目錄和pom.xml檔案。

  在\system_web\src\main\webapp目錄中還生成了一個簡單的index.jsp。

      在system_web\src\main\webapp\WEB-INF目錄中生成了web.xml。如下圖所示:

  

  裡面的內容為

<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

  同時,在mBlindDates目錄中的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>com.cmbcb</groupId>
  <artifactId>mBlindDates</artifactId>
  <version>1.0-SNAPSHOT</version>
  <modules>
    <module>system_domain</module>
    <module>system_dao</module>
    <module>system_service</module>
    <module>system_web</module>
  </modules>
  <packaging>pom</packaging>
  <name>mBlindDates</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>
複製程式碼

  修改system_web目錄中的pom.xml檔案,,把<groupId>com.cmbcb</groupId><version>1.0-SNAPSHOT</version>去掉,因為groupId和version會繼承mBlindDates中的groupId和version,同時新增對system_service模組的依賴修改後的內容如下:

複製程式碼
<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/maven-v4_0_0.xsd">
    <parent>
        <artifactId>mBlindDates</artifactId>
        <groupId>com.cmbcb</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>system_web</artifactId>
    <packaging>war</packaging>
    <name>system_web Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
<!--
            system-web依賴system-service
        -->
<dependency>
            <groupId>com.cmbcb</groupId>
            <artifactId>system_service</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>system_web</finalName>
    </build>
</project>
複製程式碼

   注意,web專案的打包方式是war

六、編譯執行專案

經過上面的五個步驟,相關的模組全部建立完成,怎麼執行起來呢。由於最終執行的是system-web模組,所以我們對該模組新增jetty支援,方便測試執行。修改system-web專案的pom.xml如下:

複製程式碼
 1 <?xml version="1.0"?>
 2 <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"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 4   <modelVersion>4.0.0</modelVersion>
 5   <parent>
 6     <groupId>com.cmbcb</groupId>
 7     <artifactId>mBlindDates</artifactId>
 8     <version>1.0-SNAPSHOT</version>
 9   </parent>
10 
11   <artifactId>system_web</artifactId>
12   <packaging>war</packaging>
13   
14   <name>system-web Maven Webapp</name>
15   <url>http://maven.apache.org</url>
16   <dependencies>
17     <!--
18     system-web依賴system-service
19     -->
20      <dependency>
21       <groupId>com.cmbcb</groupId>
22       <artifactId>system_service</artifactId>
23       <version>${project.version}</version>
24     </dependency>
25   </dependencies>
26   </project>
複製程式碼

  在命令列進入system-parent目錄,然後執行下列命令:

mvn clean install

  如下圖所示:

  

相關推薦

Maven學習總結——IDEA使用Maven構建模組專案

  在平時的Javaweb專案開發中為了便於後期的維護,我們一般會進行分層開發,最常見的就是分為domain(域模型層)、dao(資料庫訪問層)、service(業務邏輯層)、web(表現層),這樣分層之後,各個層之間的職責會比較明確,後期維護起來也相對比較容易,今天我們就是使用Maven來構建以上的各個層

Maven學習總結(4)-使用Maven構建模組專案

我用的IDE是eclipse,以下是多模組專案構建步驟。 一、新建Maven Project 1.New-Maven Project-Next 2.操作如下 3.如下填寫,然後Finish 說明:maven中jar、war、pom的區別

Maven學習總結(三)——使用Maven構建專案

 maven作為一個高度自動化構建工具,本身提供了構建專案的功能,下面就來體驗一下使用maven構建專案的過程。 一、構建Jave專案 1.1、建立Jave Project   1、使用mvn archetype:generate命令,如下所示: mvn archet

maven 單獨構建模組專案的單個模組

最近在公司的一個專案裡用到了maven的多模組,由於專案比較大,每次修改後構建整個工程耗時太久,需要單獨構建某個模組,mvn有支援的選項: -pl, --projects Build specified reactor projects instead

maven介紹以及ideamaven的使用

    Maven 除了以程式構建能力為特色之外,還提供高階專案管理工具。由於 Maven 的預設構建規則有較高的可重用性,所以常常用兩三行 Maven 構建指令碼就可以構建簡單的專案。由於 Maven 的面向專案的方法,許多 Apache Jakarta 專案發文時使用 Maven,而且

Maven構建模組專案

在平時的Javaweb專案開發中為了便於後期的維護,我們一般會進行分層開發,最常見的就是分為domain(域模型層)、dao(資料庫訪問層)、service(業務邏輯層)、web(表現層),這樣分層之後,各個層之間的職責會比較明確,後期維護起來也相對比較容易,今天我們就是使用

IDEA使用springBoot+gradle構建模組專案

最近專案中用到了springboot+gradle來構建多模組專案,寫這篇文章純當作筆記吧,同時也分享給大家。 gradle和maven是目前很便捷的兩款專案構建工具,都有各自的優勢。據官方統計,gradle比maven構建專案時快100倍以上。廢話不多說,下面介紹一下如何

使用maven構建模組專案

①首先建立一個springboot專案 ②再new一個新的模組(新模組依然是springboot專案,同理可以繼續建立需要的新模組) 目錄結構如下圖所示 ③構建模組的依賴關係,模組之間的依賴如下圖所示 在父模組的pom檔案中新增專案的所有依賴,子模組可以繼

使用maven構建模組專案(二)

1. 使用dependencyManagement管理依賴 dependencyManagement的作用:Maven使用dependencyManagement元素來提供一種管理依賴版本號的方法。 (1)helloweb-parent——>pom

使用maven構建模組專案(一)

1. 建立helloweb專案的骨架結構 (1)建立一個maven專案helloweb,刪除target資料夾,如下圖所示 (2)在helloweb目錄下,建立以下4個資料夾 a. helloweb-parent b. helloweb-en

Maven權威指南(續)之模組專案構建及POM優化

  在《Maven權威指南》部分I中,第6、7章介紹了多模組專案及多模組企業級專案的構建思想。對於多模組的情況,無論是簡單的或是企業級的,對於POM來說,重點就是分析處理好父POM與子POM之間的關係,包括依賴管理(DependencyManagement)、外掛管理(Plu

【日常工作】maven構建模組專案依賴問題——dependencyManagement、dependencies

環境: MacBook Pro 15 jdk8 IntelliJ IDEA 引子 對於maven多模組專案,自然會想到每個模組都有自己的pom檔案,每個模組都可以在自己的pom中定義自己需要的dependency;很容易想到,多個pom

maven構建模組專案的兩種方式

maven構建多模組父子專案有兩種方式,一種通過Eclipse工具去建立,另一種在可以在控制檯通過maven指令建立專案。下面舉例一步步構建下面的JavaWeb專案 project-parent             |----pom.xml             |-

IDEA如何將模組Spring boot專案打包

SpringBoot就是一個內嵌WEB伺服器(tomcat/jetty)可執行程式的框架。 所以開發的web應用不需要作為war包部署到web伺服器中,而是作為一個可執行程式,可執行的jar包部署就可以了。 專案的釋出: 1.修改父模組pom檔案  去掉maven打包

IntelliJ IDEA Spring Boot模組打包

1.專案結構 2.主模組base-data的pom檔案中新增 <build> <plugins> <plugin> <groupId>org

Springboot+Gradle+Docker構建模組專案

文章目錄 背景 引入子模組時exclude失效 Gradle Docker plugin推薦 Docker打包SpringBoot多模組專案 gradle構建的jar包找不到main入口 背景 原有Springboot基

springboot+gradle 構建模組專案

springboot用以進行web專案開發的便捷性,本文不再贅述,主要是想將工作中基於springboot與gradle的多模組專案的構建經驗進行總結與歸納。 1.建立專案 首先安裝java和gradle,本文選用的java版本為1.8.0_40,g

Gradle構建模組專案

廢話不多說,直接進入主題。 1. 建立專案 首先建立專案,名稱為 test: mkdir test && cd test gradle init 這時候的專案結構如下: ➜ test tree . ├── build.gradle ├── gradl

IDEA建立SpringBoot的模組專案教程

最近在寫一個多模組的SpringBoot專案,基於過程總了一些總結,故把SpringBoot多個模組的專案建立記錄下來。 首先,先建立一個父工程: (1)在IDEA工具欄選擇File->New->Project (2)選擇Spring Initializr,預設選擇Default,然後點選Nex

Maven學習總結(八):Myecplise配置maven

第一步:下載maven安裝包,配置環境變數M2_HOME;變數值為maven的解壓目錄。 第二步:在eclipse4.0之前的版本需要安裝maven外掛,方法即:將maven外掛包複製到eclipse安裝目錄的dropins資料夾下,安裝之後版本的eclipse和myeclipse,無需安裝外掛。本人是用的