Maven中聚合與繼承
一、聚合
如果我們想一次構建多個專案模組,那我們就需要對多個專案模組進行聚合
1.1、聚合配置程式碼
<modules>
<module>模組一</module>
<module>模組二</module>
<module>模組三</module>
</modules>
例如:對專案的Hello、HelloFriend、MakeFriends這三個模組進行聚合
<modules> <module>../Hello</module> <module>../HelloFriend</module> <module>../MakeFriends</module> </modules>
其中module的路徑為相對路徑。
二、繼承
繼承為了消除重複,我們把很多相同的配置提取出來,例如:grouptId,version等
2.1、繼承配置程式碼
<parent> <groupId>me.gacl.maven</groupId> <artifactId>ParentProject</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../ParentProject/pom.xml</relativePath> </parent>
2.2、繼承程式碼中定義屬性
繼承程式碼過程中,可以定義屬性,例如:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>4.9</junit.version>
<maven.version>0.0.1-SNAPSHOT</maven.version>
</properties>
訪問屬性的方式為${junit.version},例如:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
2.3、父模組用dependencyManagement進行管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>cn.itcast.maven</groupId>
<artifactId>HelloFriend</artifactId>
<version>${maven.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>
</dependencyManagement>
這樣的好處是子模組可以有選擇行的繼承,而不需要全部繼承。
三、聚合與繼承的關係
聚合主要為了快速構建專案,繼承主要為了消除重複
四、聚合與繼承實戰演練
建立四個Maven專案,如下圖所示:
這四個專案放在同一個目錄下,方便後面進行聚合和繼承
Parent專案是其它三個專案的父專案,主要是用來配置一些公共的配置,其它三個專案再通過繼承的方式擁有Parent專案中的配置,首先配置Parent專案的pom.xml,新增對專案的Hello、HelloFriend、MakeFriends這三個模組進行聚合以及jar包依賴,pom.xml的配置資訊如下:
Parent專案的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>me.gacl.maven</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Parent</name>
<url>http://maven.apache.org</url>
<!-- 對專案的Hello、HelloFriend、MakeFriends這三個模組進行聚合 -->
<modules>
<module>../Hello</module>
<module>../HelloFriend</module>
<module>../MakeFriends</module>
</modules>
<!-- 定義屬性 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>4.9</junit.version>
<maven.version>0.0.1-SNAPSHOT</maven.version>
</properties>
<!-- 用dependencyManagement進行jar包依賴管理 -->
<dependencyManagement>
<!-- 配置jar包依賴 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<!-- 訪問junit.version屬性 -->
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>me.gacl.maven</groupId>
<artifactId>Hello</artifactId>
<!-- 訪問maven.version屬性 -->
<version>${maven.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>me.gacl.maven</groupId>
<artifactId>HelloFriend</artifactId>
<!-- 訪問maven.version屬性 -->
<version>${maven.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
在Hello專案的pom.xml中繼承Parent專案的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>
<artifactId>Hello</artifactId>
<!-- 繼承Parent專案中的pom.xml配置 -->
<parent>
<groupId>me.gacl.maven</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 使用相對路徑 -->
<relativePath>../Parent/pom.xml</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
</project>
在HelloFriend專案的pom.xml中繼承Parent專案的pom.xml配置
4.0.0
HelloFriend
HelloFriend
<!-- 繼承Parent專案中的pom.xml配置 -->
<parent>
<groupId>me.gacl.maven</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../Parent/pom.xml</relativePath>
</parent>
<dependencies>
<dependency>
<!-- Parent專案的pom.xml檔案配置中已經指明瞭要使用的Junit的版本號,因此在這裡新增junit的依賴時,
可以不指明<version></version>和<scope>test</scope>,會直接從Parent專案的pom.xml繼承 -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<!-- HelloFriend專案中使用到了Hello專案中的類,因此需要新增對Hello.jar的依賴
Hello.jar的<version>和<scope>也已經在Parent專案的pom.xml檔案配置中已經指明瞭
因此這裡也可以省略不寫了
-->
<dependency>
<groupId>me.gacl.maven</groupId>
<artifactId>Hello</artifactId>
</dependency>
</dependencies>
在MakeFriends專案的pom.xml中繼承Parent專案的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>
<artifactId>MakeFriends</artifactId>
<!-- 繼承Parent專案中的pom.xml配置 -->
<parent>
<groupId>me.gacl.maven</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../Parent/pom.xml</relativePath>
</parent>
<dependencies>
<dependency>
<!-- Parent專案的pom.xml檔案配置中已經指明瞭要使用的Junit的版本號,因此在這裡新增junit的依賴時,
可以不指明<version></version>和<scope>test</scope>,會直接從Parent專案的pom.xml繼承 -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<!-- MakeFriends專案中使用到了HelloFriend專案中的類,因此需要新增對HelloFriend.jar的依賴
HelloFriend.jar的<version>和<scope>也已經在Parent專案的pom.xml檔案配置中已經指明瞭
因此這裡也可以省略不寫了
-->
<groupId>me.gacl.maven</groupId>
<artifactId>HelloFriend</artifactId>
</dependency>
</dependencies>
</project>
以上的四個專案的pom.xml經過這樣的配置之後,就完成了在Parent專案中聚合Hello、HelloFriend、MakeFriends這三個子專案(子模組),而Hello、HelloFriend、MakeFriends這三個子專案(子模組)也繼承了Parent專案中的公共配置,這樣就可以使用Maven一次性構建所有的專案了,如下圖所示:
相關推薦
Maven中聚合與繼承
一、聚合 如果我們想一次構建多個專案模組,那我們就需要對多個專案模組進行聚合 1.1、聚合配置程式碼 <modules> <module>模組一</module> <module>模組二</mod
maven專案聚合與繼承、依賴管理、佔位符、構建管理、多套配置
本文引用部落格地址:https://my.oschina.net/mzdbxqh/blog/846018 本文開始對study-parent模組的pom.xml進行配置。該檔案的角色是整個Maven的Parent。文中將對Maven的聚合與繼承、依賴管理、佔位符、構建管理、多套配置等概念進行解釋。
maven的聚合與繼承
img bubuko 開發 系統 http png 概念 mave mage 花了兩天,系統的看完了《maven實戰》, 盡管書是10年出的,但裏面的概念,現在也不過時。 很多以前朦朧的東西,現在都清晰了。 重要的知識點,還是在多模塊開發中。 maven的聚合與
Maven之聚合與繼承
1.聚合 <project> <modelVersion>4.0.0</modelVersion> <groupId></groupId> <artifactId></artifactId&g
Maven中的聚合與繼承
1、聚合 一個帶有模組的專案稱為“多模組”或“聚合器”專案。模組是POM列出的專案,並作為一個組執行。一個pom打包的專案可以通過將它們作為模組來聚合一組專案的構建,這些模組是這些專案的目錄或pom檔案的相對路徑。 <project xmlns
第七節:Maven中的聚合與繼承
Maven的聚合特性能夠把專案的各個模組聚合在一起構建,而Maven的繼承特性則能幫助抽取各模組間相同的依賴和外掛配置,還能促進各個模組之間配置的一致性。 聚合: 我們在開發過程中,將專案拆分成獨立的子模組,每個模組都是一個獨立的maven proje
Maven深入學習(三)- 聚合與繼承
1.聚合 在使用Maven的過程中,手邊可能有很多個專案,都需要打包,或者同時進行一些操作,這時候,如果一個一個手動的去操作, 就會顯得很麻煩。這時候,使用聚合就可以解決問題了。 假設,現在已有專案brother01,brother02,我們想要同時將這兩個專
Maven 聚合與繼承
一. 聚合 隨著技術的飛速發展和各類使用者對軟體的要求越來越高,軟體本身也變得越來越複雜,然後軟體設計人員開始採用各種方式進行開發,於是就有了我們的分層架構、分模組開發,來提高程式碼的清晰和重用。針對於這一特性,maven也給予了相應的配置。 我們在開發過程中,建立了2個以上的模組,每個模組都是一個獨
設計模式—靜態代理模式(聚合與繼承方式比較)
rri 技術分享 ktr sta too div ide rup 增加 一、概述 1.目標:要在Tank的move()方法做時間代理及日誌代理(可以設想以後還要增加很多代理處理),且代理間的順序可活更換 2.思路: (1)聚合:代理類聚合了被代理類,且代理類及被代理類都實現
Maven的聚合和繼承
maven中的聚合和繼承是2個不同的概念,雖然經常在一個父模組裡同時完成這2個功能 。 聚合的作用是把子專案的構建過程串到一起。一個專案往往由多個模組構成的,在進行構建時,針對每個模組都進行構建命令是一件非常繁瑣又容易出錯的事情,所以Maven的聚合功能能夠替我們完成進行一
Maven學習總結(七):Maven的聚合和繼承
一、聚合 如果我們想一次構建多個專案模組,那我們就需要對多個專案模組進行聚合 1.1、聚合配置程式碼 1 <modules> 2 <module>模組一</module> 3 <module>模組二</module
Eclipse使用(十二)—— 建立Maven多模組(父子)專案演示Maven的聚合和繼承以及模組之間的依賴關係
在子模組中宣告該模組所屬的父專案,如下: <packaging>jar</packaging><!-- 打包方式jar包或者war包,如果不宣告預設為jar包,當然也可以為pom,這意味著此模組下面還有子模組 --> <parent> <grou
Maven學習筆記之maven的聚合和繼承問題
聚合: 將多個模組聚合到一個模組裡面,然後同時進行編譯,執行。如下: 將user-core和user-log、user-service聚合到user模組中。 只需要在user的pom.xml中進行如下操作 執行情況將按照先後順序依次執行。 繼承: 將p
重新學習java(四) ---- 組合、聚合與繼承的愛恨情仇
有人學了繼承,認為他是面向物件特點之一,就在所有能用到繼承的地方使用繼承,而不考慮究竟該不該使用,無疑,這是錯誤的。那麼,究竟該如何使用繼承呢?java中類與類之間的關係大部分的初學者只知道java中兩個類之間可以是繼承與被繼承的關係,可是事實上,類之間的關係大體上存在五
【maven】---聚合和繼承
前言 自從我知道寫maven實戰這本書的作者長得隨心所欲後,我再拿起這本書真心的不想看前言了。下面分享一下maven中的所謂的聚合和繼承。 內容 下文中的子本指的是:多個maven專案。 父本
maven之聚合和繼承
maven聚合工程時為了方便管理,可能一個工程有多個子模組,這時可以建立聚合工程管理. maven繼承是為了方便jar包管理,比如:可能A B C三個工程都需要junit jar包,在每個工程新增jar包依賴會顯得重複,這時只需要建立一個工程讓A B C繼承,在父工程中新增
Maven聚合模塊與繼承和Maven的生命周期
iss lips 平時 watermark 配置文件 高度 執行 clip 計數 端碗吹水 Maven聚合模塊: 因為Maven是提倡模塊化編程的,所以會以多個工程分為多個模塊。如果所有的功能、模塊都寫在一個工程裏的話,不方便於擴展、升級、修改、查看和團隊開發,而且也不方便
在Maven中的繼承與依賴傳遞
1、Maven中的繼承 在Maven中,子專案是可以繼承父專案中的依賴的,比如說我們有一個父專案maven-parent,該父專案擁有一個子專案A,如果在父專案中依賴了junit,那麼在子專案A中即便是沒有引入junit,在子專案中仍然能夠使用junit,
MongoDB中聚合工具Aggregate等的介紹與使用
mon new 測試數據 first 排序 表示 大數據 init god Aggregate是MongoDB提供的眾多工具中的比較重要的一個,類似於SQL語句中的GROUP BY。聚合工具可以讓開發人員直接使用MongoDB原生的命令操作數據庫中的數據,並且按照要求進行聚
論python3下“多態”與“繼承”中坑
ict for all order section 有意思 back ani eve 1、背景: 近日切換到python3後,發現python3在多態處理上,有一些比較有意思的情況,特別記載,供大家參考。。。 以廖老師的python3教程中的animal 和dog的繼承