真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

開(kāi)局一張圖,學(xué)一學(xué)項(xiàng)目管理神器Maven

Maven強(qiáng)大的Java工程構(gòu)建工具,做Java開(kāi)發(fā)時(shí)少了跟Maven打交道,之前在知乎上看到有人提問(wèn):“學(xué)Java開(kāi)發(fā)需不需要學(xué)習(xí)Maven?”,個(gè)人認(rèn)為是必需要學(xué)的,這和 工欲善其事必先利其器是一個(gè)道理,開(kāi)發(fā)軟件也要先把工具學(xué)好才能 事半功倍 啊。所以最近花了一點(diǎn)時(shí)間,將Maven的基礎(chǔ)知識(shí)整理成一張腦力:
開(kāi)局一張圖,學(xué)一學(xué)項(xiàng)目管理神器Maven

創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比防城港網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式防城港網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋防城港地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴(lài)。

這篇文件主要簡(jiǎn)單介紹一些Maven中的概念,文章大致內(nèi)容如下:

安裝maven
配置maven
maven的命令語(yǔ)法
maven的構(gòu)建征集周期
其他的一些高級(jí)特性如依賴(lài)、插件、settings部分留待之后再整理成。

安裝Maven
安裝Maven的步驟非常簡(jiǎn)單、快速,安裝之前先確認(rèn) JAVA_HOME 環(huán)境變量是否指向JDK主目錄可以使用 echo 命令輸出 JAVA_HOME 目錄:

echo $JAVA_HOME

如果輸出為空說(shuō)明 JAVA_HOME 未設(shè)置或指向不正確,可以使用 export 導(dǎo)出 JAVA_HOME 變量:

export JAVA_HOME=/path/to/java_home/

要使 JAVA_HOME 變量開(kāi)機(jī)生效,可以將 JAVA_HOME=/path/to/java_home/ 放入 .profile 或 .bash_profile 視機(jī)器環(huán)境而定。

設(shè)置好 JAVA_HOME 環(huán)境變量后,就可以安裝Maven了:

下載 apache-maven-3.6.3-bin.zip
使用 unzip 命令解壓 apache-maven-3.6.3-bin.zip 壓縮文件
添加一個(gè) MAVEN_HOME 環(huán)境變量,指向解壓后的 apache-maven-3.6.3-bin 目錄
將 MAVEN_HOME/bin 添加 PATH 環(huán)境變量中

下載 Maven

wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip

解壓 Maven

unzip apache-maven-3.6.3-bin.zip

設(shè)置 MAVEN_HOME 環(huán)境變量

cd apache-maven-3.6.3
pwd #查看當(dāng)前目錄
export MAVEN_HOME=/Users/yjwfn/bin/apache-maven-3.6.3

設(shè)置 PATH 環(huán)境變量

export PATH=$PATH:$MAVEN_HOME/bin

以上配置只是當(dāng)前 shell終端生效 ,要每次開(kāi)機(jī)自動(dòng)設(shè)置需要將以上命令放入 ~/.bash_profile 或 ~/.profile 中,本文使用 ~/.bash_profile (不同的機(jī)器名稱(chēng)會(huì)不一樣,Linux一般叫 ~/.profile ):

vi ~/.bash_profile

將以下命令復(fù)制到文件中:

export MAVEN_HOME=/Users/yjwfn/bin/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin

驗(yàn)證安裝
使用 which mvn 命令驗(yàn)證安裝是否正確,查看輸出 mvn 位置是否正確:

liuweideMacBook-Pro:bin yjwfn$ which mvn
/Users/yjwfn/bin/apache-maven-3.6.3/bin/mvn

使用 mvn -v 查看安裝的 Maven 版本是否正確(因?yàn)橛行┫到y(tǒng)會(huì)自帶 Maven):

liuweideMacBook-Pro:bin yjwfn$ mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/yjwfn/bin/apache-maven-3.6.3
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"

運(yùn)行 Maven
運(yùn)行 Maven 命令的基本樣式由 options 、 goal(s) 、 phase(s) 組成:

mvn [options] [] []

所有的 options 可以使用 mvn -h 查看:

liuweideMacBook-Pro:bin yjwfn$ mvn -h

usage: mvn [options] [] []

Options:
 -am,--also-make                        If project list is specified, also
 ....

Maven 命令的重點(diǎn)是 goal(s) 、 phase(s) 這兩個(gè)概念,字面意思注是目標(biāo)、階段的意思。他們的使用和另外一個(gè)概念 life cycles 有關(guān),后面會(huì)詳細(xì)解釋。現(xiàn)在只需要明白一條 Maven 命令由多個(gè) options 、 goal(s) 、 phase(s) 組成。

Maven配置
Maven 有三個(gè)可以修改配置的地方:

MAVEN_OPTS 環(huán)境變量 :向全局 Maven 提供額外的選項(xiàng),如JVM配置參數(shù) -Xms256m -Xmx512m;
settings.xml :文件位于 USER_HOME/.m2 目錄中,向多個(gè) Maven 項(xiàng)目提供統(tǒng)一的配置
.mvn 目錄:該目錄位工程目錄根目錄中,是個(gè)隱藏的文件extensions.xmlmaven.configjvm.config

MAVEN_OPTS 使用
MAVEN_OPTS 是一個(gè)環(huán)境變量,默認(rèn)是空的。為測(cè)試將 MAVEN_OPTS 設(shè)置成 -h :

export MAVEN_OPTS=-h #加個(gè)-h選項(xiàng)

然后執(zhí)行 mvn 不帶任務(wù)參數(shù)就打印出usage:

用法: java [-options] class [args...]
           (執(zhí)行類(lèi))
   或  java [-options] -jar jarfile [args...]
           (執(zhí)行 jar 文件)

注意:仔細(xì)一看這個(gè) usage 其實(shí)是Java命令輸出的 java -h :

iuweideMacBook-Pro:bin yjwfn$ java -h
用法: java [-options] class [args...]
           (執(zhí)行類(lèi))
   或  java [-options] -jar jarfile [args...]
           (執(zhí)行 jar 文件)

測(cè)試 java -h 與將 MAVEN_OPTS 設(shè)置成 -h 然后執(zhí)行 mvn 打印出來(lái)的效果一致,所以 MAVEN_OPTS 大家應(yīng)該知道怎么用了吧! 要往JVM傳遞參數(shù)可以通過(guò) MAVEN_OPTS 變量設(shè)置 。

settings.xml 文件
settings.xml 可以放在兩個(gè)地址:

$MAVEN_HOME/conf/settings.xml
USER_HOME/.m2

$MAVEN_HOME 就是安裝步驟中設(shè)置的環(huán)境變量, settings.xml 的加載可以打開(kāi) --debug 選項(xiàng)查看:

mvn --debug
# 部分控制臺(tái)輸出
[DEBUG] Reading global settings from /Users/yjwfn/bin/apache-maven-3.6.3/conf/settings.xml
[DEBUG] Reading user settings from /Users/yjwfn/.m2/settings.xml

如控制臺(tái)輸出一樣,會(huì)在 $MAVEN_HOME 和 USER_HOME/.m2 中加載兩個(gè) settings.xml 文件。 settings.xml 的配置項(xiàng)非常多,就不詳細(xì)說(shuō)明了可以查看官方文檔。
開(kāi)局一張圖,學(xué)一學(xué)項(xiàng)目管理神器Maven

mvn 目錄
mvn 目錄位于工程根目錄中,是工程級(jí)的配置一般包含三個(gè)配置文件:

extensions.xml
maven.config
jvm.config
Maven Extensions
extensions.xml 是為了使開(kāi)發(fā)者更方便的使用 Extensions 功能建立的配置文件, Extensions 是一種添加庫(kù)到 Core Classloader 的方式 , Maven 主要有四類(lèi) System Classloader -> Core Classloader -> Plugin Classloaders -> Custom Classloaders 由于 CloassLoader 都是雙親委派模式,所以添加到 Core Classloader 中的庫(kù)可以在 Plugin Classloaders 和 Custom Classloaders 中使用:
開(kāi)局一張圖,學(xué)一學(xué)項(xiàng)目管理神器Maven

extensions.xml的配置演示:
extensions.xml 這個(gè)配置文件就是聲明哪些庫(kù)需要添加到 Core Classloader 中,如下聲明將 guava 添加到 Core Classloader 中:
開(kāi)局一張圖,學(xué)一學(xué)項(xiàng)目管理神器Maven


  
    com.google.guava
    guava
    23.0
  

maven.config
maven.config 主要用于添加通用選項(xiàng),在執(zhí)行 mvn 命令時(shí)會(huì)將 maven.config 中配置的命令options添加到命令中。

新建個(gè)maven.config文件,內(nèi)容如下:

-v

直接執(zhí)行 mvn 不帶任何選項(xiàng),由于在 maven.config 中有 -v 選項(xiàng),所以打出的內(nèi)容就是 mvn -v :

liuweideMacBook-Pro:.mvn yjwfn$ mvn
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/yjwfn/bin/apache-maven-3.6.3
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"
liuweideMacBook-Pro:.mvn yjwfn$

jvm.config
jvm.config 是配置JVM參數(shù)的文件,很容易理解就不多說(shuō)了。

Maven 構(gòu)建生命周期
構(gòu)建生命周期 就Maven較核心的概念, Maven有三個(gè)內(nèi)置的構(gòu)建生命周期分別為: clean 、 default 、 site 。

構(gòu)建階段(Build Phase)
在Maven中 一個(gè)生命周期由一系列 Build Phase 組成 ,而每個(gè)生命周期都會(huì)有很多 Build Phase 如 default 生命周期由以下 Build Phase 組成:

validate -確認(rèn)項(xiàng)目正確并且所有必要的信息均可用
compile -編譯項(xiàng)目的源代碼
test-使用合適的單元測(cè)試框架測(cè)試編譯后的源代碼。這些測(cè)試不應(yīng)要求將代碼打包或部署
package -獲取編譯后的代碼,并將其打包為可分發(fā)的格式,例如JAR。
verify -對(duì)集成測(cè)試的結(jié)果進(jìn)行任何檢查,以確保符合質(zhì)量標(biāo)準(zhǔn)
install -將軟件包安裝到本地存儲(chǔ)庫(kù)中,以作為本地其他項(xiàng)目中的依賴(lài)項(xiàng)

deploy -在構(gòu)建環(huán)境中完成后,將最終軟件包復(fù)制到遠(yuǎn)程存儲(chǔ)庫(kù)中,以便與其他開(kāi)發(fā)人員和項(xiàng)目共享。
這些生命周期階段(加上此處未顯示的其他生命周期階段)將順序執(zhí)行以完成 default 生命周期。給定上面的生命周期階段,這意味著當(dāng)使用 default 生命周期時(shí),Maven將首先驗(yàn)證項(xiàng)目,然后嘗試編譯源代碼,針對(duì)測(cè)試運(yùn)行源代碼,打包二進(jìn)制文件(例如jar),針對(duì)該源運(yùn)行集成測(cè)試軟件包,驗(yàn)證集成測(cè)試,將經(jīng)過(guò)驗(yàn)證的軟件包安裝到本地存儲(chǔ)庫(kù),然后將已安裝的軟件包部署到遠(yuǎn)程存儲(chǔ)庫(kù)。

插件目標(biāo)(Plugin Goals)
Build Phase 只是定義一些軟件構(gòu)建的流程,它不會(huì)直接去構(gòu)建工程,這些構(gòu)建流程的實(shí)施都是由 插件 來(lái)做的,構(gòu)建生命周期可以這樣理解 一個(gè)生命周期由多個(gè)構(gòu)建階段組成,每個(gè)構(gòu)建階段都會(huì)被多個(gè)插件目標(biāo)綁定 ,用一張圖表示他們之間的關(guān)系:
開(kāi)局一張圖,學(xué)一學(xué)項(xiàng)目管理神器Maven

圖中的 jar:jar 、 install:install 是 plugin:goal 的意思,冒號(hào)的前面部分是插件名稱(chēng),后面是目標(biāo)名稱(chēng)。由上圖可知當(dāng)執(zhí)行 mvn install 的命令時(shí),會(huì)執(zhí)行 default 生命周期中的 install 階段(同時(shí)在install之前的階段也會(huì)執(zhí)行),由于 install:install 目標(biāo)綁定到了 install phase ,所以 install:install 目標(biāo)也會(huì)執(zhí)行,這樣就通過(guò) install 插件來(lái)完成打包功能。

總結(jié)
Maven是非常流行的構(gòu)建工具,下一代構(gòu)建工具 Gradle 也有一些點(diǎn)是借鑒了Maven。文中所提到的點(diǎn)只是Maven工具的一部分知識(shí),Maven還有很多強(qiáng)大的功能如:依賴(lài)管理、插件管理、多工程等功能,后續(xù)再整理這些高級(jí)功能與大家分享。


本文標(biāo)題:開(kāi)局一張圖,學(xué)一學(xué)項(xiàng)目管理神器Maven
網(wǎng)頁(yè)網(wǎng)址:http://weahome.cn/article/pgdheh.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部