欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請(qǐng)碼778899分享:Maven深入了解

柚子快報(bào)邀請(qǐng)碼778899分享:Maven深入了解

http://yzkb.51969.com/

Maven深入了解

前言一、Maven的核心概念1.1 Maven-Jar包+模塊化管理1.2 POM1.3 坐標(biāo)及其命名規(guī)范1.4 倉庫的概念1.5 生命周期1.6 插件和目標(biāo)

二、依賴管理2.1 自己寫的模塊和模塊之間也可以互相依賴2.2 依賴的生效范圍(scope標(biāo)簽)2.3 依賴的傳遞性2.4 依賴沖突問題2.5 依賴的排除2.6 依賴版本統(tǒng)一管理

三、繼承3.1 手動(dòng)更改配置文件3.2 使用IDEA自動(dòng)繼承

四、聚合4.1 問題引入4.2 解決方案

前言

上一章的學(xué)習(xí)已經(jīng)足夠掌握對(duì)Maven的基本使用了 而本章節(jié)對(duì)Maven的深入了解即使不掌握也不影響Maven的使用 不過經(jīng)過本章更細(xì)節(jié)的學(xué)習(xí) 在往后使用Maven出現(xiàn)的小問題 可以更快速的定位問題所在

一、Maven的核心概念

1.1 Maven-Jar包+模塊化管理

Maven的兩大主要功能就是:

管理Jar包模塊化管理項(xiàng)目

1.2 POM

本質(zhì)就是面向?qū)ο?模塊化的思想 Maven主要就兩個(gè)點(diǎn): 第一是對(duì)jar包的各種管理 第二是對(duì)項(xiàng)目的管理(把項(xiàng)目拆分成各個(gè)模塊項(xiàng)目進(jìn)行管理)

1.3 坐標(biāo)及其命名規(guī)范

數(shù)學(xué)中,在平面上xy能確定一個(gè)唯一的點(diǎn);在空間上xyz能確定一個(gè)唯一的點(diǎn)類似的,在Maven中的坐標(biāo)也是這個(gè)作用,確定該項(xiàng)目/模塊的唯一路徑

這里用install自己的模塊到本地倉庫為例:

命名規(guī)范: groupId:公司或者組織的域名的倒序+當(dāng)前項(xiàng)目/模塊名稱 artifactId:當(dāng)前項(xiàng)目/模塊的名稱 version:當(dāng)前項(xiàng)目/模塊的版本號(hào)

1.4 倉庫的概念

事實(shí)上 在實(shí)際工作中 本地倉庫和中央倉庫之間還存在一個(gè)私服 也就是公司為了方便統(tǒng)一管理 自己搞得私人服務(wù)器 由公司統(tǒng)一從中央倉庫下載 員工在個(gè)人電腦上配置公司私服的地址 這樣做主要就是為了公司能統(tǒng)一管理

1.5 生命周期

clean default site

1.6 插件和目標(biāo)

剛剛說Maven生命周期 那么多的功能 實(shí)際上都是有插件完成的 而Maven的核心僅僅是定義了生命周期

目標(biāo)可以理解成任務(wù) 任務(wù)和插件的關(guān)系是一對(duì)多

二、依賴管理

2.1 自己寫的模塊和模塊之間也可以互相依賴

因?yàn)槲抑耙呀?jīng)對(duì)Test02進(jìn)行過install操作 所以直接測(cè)試 是沒什么問題的

看看我把Test02在本地倉庫的Jar刪除會(huì)發(fā)生什么

2.2 依賴的生效范圍(scope標(biāo)簽)

compile(默認(rèn)就是這個(gè)范圍) 1.main目錄下的Java代碼可以訪問這個(gè)范圍的依賴 2.test目錄下的Java代碼可以訪問這個(gè)范圍的依賴 3.部署到Tomcat服務(wù)器上運(yùn)行時(shí) 要放在WEB-INF的lib目錄下(簡(jiǎn)單的理解成部署出去的肯定是給用戶使用的 用的就是主程序的代碼 所以肯定要放)

列如上面的Junit 我沒有寫任何scope標(biāo)簽 所以是默認(rèn)的compile 那么我無論是在主程序里importJunit還是在測(cè)試程序里importJunit 都不會(huì)報(bào)錯(cuò)

test 1.main目錄下的Java代碼不能訪問這個(gè)范圍的依賴 2.test目錄下的Java代碼可以訪問這個(gè)范圍的依賴 3.部署到Tomcat服務(wù)器上運(yùn)行時(shí)不會(huì)放在WEB-INF的lib目錄下(測(cè)試程序 我當(dāng)然不需要部署 這對(duì)用戶來說是無關(guān)緊要的) provided(生效范圍和compile一致) 1.main目錄下的Java代碼可以訪問這個(gè)范圍的依賴 2.test目錄下的Java代碼可以訪問這個(gè)范圍的依賴 3.部署到Tomcat服務(wù)器上運(yùn)行時(shí)不會(huì)放在WEB-INF的lib目錄下

因?yàn)門omcat也是用Java寫的 他所依賴的Jar包肯定是自帶的 而我的項(xiàng)目如果用到了相同的Jar包 直接用Tomcat的就行了 例如:servlet-api在服務(wù)器上運(yùn)行時(shí),Servlet容器會(huì)提供相關(guān)API,所以部署的時(shí)候不需要

2.3 依賴的傳遞性

2.4 依賴沖突問題

Maven自動(dòng)會(huì)根據(jù)以下兩點(diǎn)原則幫助我們處理依賴沖突問題

1.路徑最短者優(yōu)先

2.路徑相同時(shí)先聲明者優(yōu)先 注:這里的聲明指的是父模塊對(duì)于依賴子模塊的聲明 如果在MakeFried里先聲明對(duì)HelloF的依賴 那就傳遞2.14 反之傳遞2.17

2.5 依賴的排除

比如: 03依賴了02 02依賴了Junit4.5 根據(jù)依賴傳遞原則 Junit4.5會(huì)傳遞給03 但是03不想要4.5 想自己依賴一個(gè)4.9 如何解決? 排除之后 我想依賴誰自己添加即可

2.6 依賴版本統(tǒng)一管理

以Spring全家桶為例 當(dāng)我引入一大堆依賴的時(shí)候 肯定希望版本是統(tǒng)一的 同時(shí)也不希望在不統(tǒng)一的情況下一個(gè)一個(gè)去改版本 這個(gè)時(shí)候就有了之前的約定>配置>編碼的思想 那我能不能把版本號(hào)提取出來成一個(gè)配置 然后直接引用呢?

牽一發(fā)則動(dòng)全身

三、繼承

3.1 手動(dòng)更改配置文件

注意:這里容易混淆 在2.6不是提到了統(tǒng)一管理嗎 為什么這里又搞出來一個(gè)繼承? 2.6的統(tǒng)一管理 是針對(duì)在同一個(gè)Maven項(xiàng)目里需要多個(gè)依賴 這里繼承是針對(duì)多個(gè)Maven項(xiàng)目里來統(tǒng)一管理依賴

其中 父工程他其實(shí)沒必要打成jar包 因?yàn)樗淖饔镁褪墙o子工程去繼承使用 方便統(tǒng)一管理的 真正有用的 要打包成jar的 就是子工程

1.首先在父工程聲明一下打包方式 2.然后在每一個(gè)子工程的pom文件里實(shí)現(xiàn)繼承

3.最后為了統(tǒng)一管理子工程依賴版本號(hào) 需要在父工程的pom里設(shè)置 3.記住如果需要使用父類統(tǒng)一的版本 需要在子類直接把依賴的版本坐標(biāo)刪掉就行(否則就類似于子類重寫了父類方法 肯定優(yōu)先使用子類的方法) 4.上面那種方式父工程里并不會(huì)加載所寫的依賴 僅僅是統(tǒng)一管理了版本 而這種方式 父類會(huì)加載junit 同時(shí)子類會(huì)直接繼承并加載junit 都不需要寫dependency

3.2 使用IDEA自動(dòng)繼承

四、聚合

4.1 問題引入

聚合的前提是有繼承關(guān)系 HelloF依賴Hello 我想打包HelloF之前 必須先把Hello install到本地倉庫才行 否則會(huì)報(bào)錯(cuò)

如果存在大量的依賴 每次都要我一個(gè)一個(gè)去找去install 豈不是非常低效率?

4.2 解決方案

聚合的配置很簡(jiǎn)單

這樣一來 問題就解決了 而且MAVEN先后順序都考慮到了 別說是package 直接install Parent都可以!!

柚子快報(bào)邀請(qǐng)碼778899分享:Maven深入了解

http://yzkb.51969.com/

文章來源

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19141949.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄