Maven基础及概念
前言
今天就來聊聊Maven的基礎(chǔ)和一些比較概念性的東西,還有一些常用的Maven命令啥的,主要是某人腦子記不住,記在博客中讓她自己看吧,省的費(fèi)心給她找。
后續(xù)的文章會(huì)聊到Maven的一些比較高級(jí)用法,像自定義插件,私服啥的,歡迎各位大佬來討論哦!
概念
Maven 是一個(gè)項(xiàng)目管理和整合工具。Maven 為開發(fā)者提供了一套完整的構(gòu)建生命周期框架。開發(fā)團(tuán)隊(duì)幾乎不用花多少時(shí)間就能夠自動(dòng)完成工程的基礎(chǔ)構(gòu)建配置,因?yàn)?/span> Maven 使用了一個(gè)標(biāo)準(zhǔn)的目錄結(jié)構(gòu)和一個(gè)默認(rèn)的構(gòu)建生命周期。
在有多個(gè)開發(fā)團(tuán)隊(duì)環(huán)境的情況下,Maven 能夠在很短的時(shí)間內(nèi)使得每項(xiàng)工作都按照標(biāo)準(zhǔn)進(jìn)行。因?yàn)榇蟛糠值墓こ膛渲貌僮鞫挤浅:?jiǎn)單并且可復(fù)用,在創(chuàng)建報(bào)告、檢查、構(gòu)建和測(cè)試自動(dòng)配置時(shí),Maven 可以讓開發(fā)者的工作變得更簡(jiǎn)單。
Maven 的主要目的是為開發(fā)者提供
Maven 工程結(jié)構(gòu)和內(nèi)容被定義在一個(gè) xml 文件中(即談到的pom.xml)
安裝配置
Maven 是一個(gè)基于 Java 的工具,所以要做的第一件事情就是安裝 JDK。
官網(wǎng)下載后解壓即可,一般都是在開發(fā)工具里面配置Maven的位置就可以了,如果喜歡敲命令的話,那就添加一下環(huán)境變量。
然后配置一下本地倉庫地址和鏡像倉庫,提供一下示例:
maven下載地址:Maven – Download Apache Maven?
JDK原生打包
在Maven工具出現(xiàn)之前,基本上用的都是Ant(打包構(gòu)建項(xiàng)目工具)打包,由于現(xiàn)在Maven越來越流行,使用Ant打包的項(xiàng)目就越來越少了,這些工具基本上都是通過對(duì)JDK原生打包的方式進(jìn)行了一層封裝,編譯打包底層還是基于JDK帶有的工具實(shí)現(xiàn)的。
現(xiàn)有一個(gè)demo測(cè)試項(xiàng)目,結(jié)構(gòu)路徑如下:
?我們進(jìn)入到這個(gè)src的目錄里面,使用命令進(jìn)行編譯:
?編譯好后就可以進(jìn)行打包成jar包文件了,jar文件又分為兩種,一種是直接被引用的jar包,另外一種是可以直接執(zhí)行的可執(zhí)行jar包,打包命令如下:
?這時(shí)打的包僅是一個(gè)普通的jar包,如果要打成可執(zhí)行包的話,那么就得引用一個(gè)MANIFEST.MF文件了,JDK也是根據(jù)這個(gè)文件加載相關(guān)的類信息的,新建一個(gè)manifest.txt文件,內(nèi)容如下(每個(gè)冒號(hào)后面都需要有空格,每行都需換行)
Manifest-Version: 1.0
Created-By: 1.8.0_101 (Oracle Corporation)
Main-Class: com.compile.App
執(zhí)行一下命令
這樣打出來的jar包就是可執(zhí)行包啦。使用以下命令啟動(dòng)jar包
?java -jar compile.jar
使用Maven打包
我們需要?jiǎng)?chuàng)建一個(gè)Maven Project項(xiàng)目,我們這里使用quickstart原型(快速創(chuàng)建)
創(chuàng)建好后再pom.xml里面的build標(biāo)簽里面添加Maven打包插件,如果不需要可執(zhí)行jar包的話,把configuration標(biāo)簽去掉就好了
?POM結(jié)構(gòu)
先放在這里,起碼有個(gè)概念,會(huì)在后面的博文中講到
?Maven項(xiàng)目結(jié)構(gòu)
項(xiàng)目結(jié)構(gòu)是一個(gè)約定好了的目錄,如果有些改動(dòng)的話,可能項(xiàng)目都不能正常運(yùn)行或打包(博主碰到過一次,賊難受)
約定的目錄(不可改):
| src/main/java –存放項(xiàng)目的.java文件 |
| src/main/resources –存放項(xiàng)目資源文件。比方Spring,Mybatis配置文件 |
| src/test/java –存放全部測(cè)試.java文件,比方JUnit測(cè)試類 |
| src/test/resources ---測(cè)試資源文件 |
| target ---項(xiàng)目輸出位置,編譯完畢后的東西放到這里面 |
| pom.xml |
Maven生命周期
在?Maven的的生命周期里面,理想的標(biāo)準(zhǔn)構(gòu)建流程為:清理->編譯 -> 測(cè)試 ->?報(bào)告 ->?打包 ->?部署。并且在一個(gè)pom.xml里面全部搞定
而Maven只是一個(gè)抽象規(guī)范流程,每個(gè)周期里面的流程是有具體的插件來執(zhí)行的
?而每個(gè)生命周期的預(yù)設(shè)如下:
| 階段 | 處理 | 描述 |
| 驗(yàn)證 validate | 驗(yàn)證項(xiàng)目 | 驗(yàn)證項(xiàng)目是否正確且所有必須信息是可用的 |
| 編譯 compile | 執(zhí)行編譯 | 源代碼編譯在此階段完成 |
| 測(cè)試 Test | 測(cè)試 | 使用適當(dāng)?shù)膯卧獪y(cè)試框架(例如JUnit)運(yùn)行測(cè)試。 |
| 包裝 package | 打包 | 創(chuàng)建JAR/WAR包如在 pom.xml 中定義提及的包 |
| 檢查 verify | 檢查 | 對(duì)集成測(cè)試的結(jié)果進(jìn)行檢查,以保證質(zhì)量達(dá)標(biāo) |
| 安裝 install | 安裝 | 安裝打包的項(xiàng)目到本地倉庫,以供其他項(xiàng)目使用 |
| 部署 deploy | 部署 | 拷貝最終的工程包到遠(yuǎn)程倉庫中,以共享給其他開發(fā)人員和工程 |
運(yùn)行任何一個(gè)階段,都會(huì)從其所在生命周期的第一個(gè)階段開始,順序執(zhí)行到指定的階段,如:
mvn package? --- 本義:執(zhí)行default周期的package階段,maven會(huì)自動(dòng)從process-resources階段開始運(yùn)行到package階段結(jié)束
Maven插件
插件plugin是綁定到生命周期,承擔(dān)實(shí)際功能的組件。mvn運(yùn)行時(shí),自動(dòng)關(guān)聯(lián)插件來運(yùn)行
下圖是maven默認(rèn)的各階段對(duì)應(yīng)的插件列表:
| 生命周期 | 生命周期階段 | 插件目標(biāo) | 執(zhí)行任務(wù) |
| clean | pre-clean | ||
| clean | maven-clean-plugin:clean | 刪除項(xiàng)目的輸出目錄。 | |
| post-clean | |||
| site | pre-site | ||
| site | maven-site-plugin:site | ||
| post-site | |||
| site-deploy | maven-site-plugin:deploy | ||
| default | process-resources | maven-resources-plugin:resources | 復(fù)制主資源文件至主輸出目錄 |
| compile | maven-compiler-plugin:compile | 編譯主代碼至主輸出目錄 | |
| process-test-resources | maven-resources-plugin:testResources | 復(fù)制測(cè)試資源文件至測(cè)試輸出目 | |
| test-compile | maven-compiler-plugin:testCompile | 編譯測(cè)試代碼至測(cè)試輸出目錄 | |
| test | maven-surefire-plugin:test | 執(zhí)行測(cè)試用例 | |
| package | maven-jar-plugin:jar(ejb:ejb jar:jar rar:rar war:war) | 創(chuàng)建項(xiàng)目jar包 | |
| install | maven-install-plugin:install | 將項(xiàng)目輸出構(gòu)件安裝到本地倉庫 | |
| deploy | maven-deploy-plugin:deploy | 將項(xiàng)目輸出構(gòu)件部署到遠(yuǎn)程倉庫 |
Maven常用命令
mvn clean? 執(zhí)行清理階段生命周期
mvn compile 執(zhí)行編譯階段生命周期
mvn package 執(zhí)行打包階段生命周期
mvn install 安裝jar到本地庫
mvn dependency:tree?將當(dāng)前項(xiàng)目pom.xml中引入的依賴打印出來
總結(jié)
以上是生活随笔為你收集整理的Maven基础及概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JDBC实现从Hive抽取数据导入Ora
- 下一篇: Java线程CAS原子操作