c++ 使用nacos_想自学Maven?推荐Maven极简高速入门及常规使用
[Java實戰(zhàn)技術]原創(chuàng),專注分享Java基礎原理分析、實戰(zhàn)技術、微服務架構、分布式系統(tǒng)構建,誠邀點贊關注!
前言
筆者的工作經(jīng)歷中使用過Ant、Maven和Gradle,如果讓筆者選擇,筆者會首選Gradle。那為什么還要寫Maven這篇內容呢?時下大部分公司都還在使用Maven,并且很多開源項目也在使用Maven,Maven有一些功能特性還是很不錯的,很值得做總結記錄。
Maven是什么
Maven是Apache旗下的一個純Java開發(fā)的開源項目,是一個用于構建和管理任何基于Java的項目的工具。
為什么要使用Maven
使用Maven輕松實現(xiàn)項目jar包依賴管理、子模塊管理、構建jar/war包、管理jar/war包、執(zhí)行單元/集成測試、執(zhí)行代碼分析/代碼質量檢查等等,開箱即用讓開發(fā)者無需花更多的時間。
Maven安裝
安裝Maven之前,需要確保安裝了JDK,Maven3.3+版本需要安裝JDK 1.7或更高版本。Apache Maven 3.6.3是當前推薦安裝的最新版本,推薦使用國內鏡像地址下載(https://mirrors.tuna.tsinghua.edu.cn/apache/)。
Windows系統(tǒng)安裝及設置
下載地址:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/
windows操作系統(tǒng)下載apache-maven-3.6.3-bin.zip,解壓壓縮包到硬盤的某個路徑,例如:D:Mavenapache-maven-3.6.3,右鍵"計算機"(或我的電腦),選擇"屬性",點擊"高級系統(tǒng)設置",點擊"環(huán)境變量",新建系統(tǒng)變量 MAVEN_HOME,變量值為D:Mavenapache-maven-3.6.3,編輯系統(tǒng)變量Path,在變量值得末尾加上;%MAVEN_HOME%bin,保存如上修改退出。
打開命令行窗口(快捷鍵win+r,輸入cmd回車),輸入mvn –v回車,如果正常輸出Maven版本號則安裝及配置完成,否則安裝上述步驟檢查。
Linux系統(tǒng)安裝及設置
Linux系統(tǒng)下載apache-maven-3.6.3-bin.tar.gz,通過如下命令行操作下載及解壓,例如解壓到/usr/local/路徑:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gztar -xvf apache-maven-3.6.3-bin.tar.gzsudo mv -f apache-maven-3.6.3 /usr/local/使用如下命令行操作打開/etc/profile:
sudo vim /etc/profile在文件末尾添加如下配置:
export MAVEN_HOME=/usr/local/apache-maven-3.6.3export PATH=${PATH}:${MAVEN_HOME}/bin退出編輯并保存,運行如下命令使配置的環(huán)境變量生效:
source /etc/profile在命令行窗口輸入mvn –v命令檢查安裝及設置是否完成,如果正常輸出Maven版本號則安裝及配置完成,否則安裝上述步驟檢查。
Mac系統(tǒng)安裝及設置
Mac系統(tǒng)下載apache-maven-3.6.3-bin.tar.gz,通過如下命令行操作下載及解壓,例如解壓到/usr/local/路徑:
curl -O https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gztar -xvf apache-maven-3.6.3-bin.tar.gzsudo mv -f apache-maven-3.6.3 /usr/local/使用如下命令行操作打開/etc/profile:
sudo vim /etc/profile在文件末尾添加如下配置:
export MAVEN_HOME=/usr/local/apache-maven-3.6.3export PATH=${PATH}:${MAVEN_HOME}/bin退出編輯并保存,運行如下命令使配置的環(huán)境變量生效:
source /etc/profile在命令行窗口輸入mvn –v命令檢查安裝及設置是否完成,如果正常輸出Maven版本號則安裝及配置完成,否則安裝上述步驟檢查。
如何使用Maven
Maven是一個龐大的項目,有很全面的管理功能,本篇內容只記錄開發(fā)者日常使用頻率比較高的部分功能。
設置Maven倉庫
Maven倉庫就是一個位置,用于存儲項目中的依賴,這個依賴可以是jar、war、zip、pom等。
Maven倉庫有三種類型:本地倉庫、中央倉庫和遠程倉庫。當執(zhí)行Maven構建命令查找項目依賴時,首先從本地倉庫搜索,如果本地倉庫找不到,再從中央倉庫搜索,如果中央倉庫也找不到,又配置過遠程倉庫,那么再從遠程倉庫搜索。
本地倉庫是計算機本機硬盤上的某個路徑,這個路徑在安裝Maven后不會馬上創(chuàng)建,它在第一次運行Maven命令的時候才被創(chuàng)建。默認情況下,本地倉庫被創(chuàng)建后,這個路徑是用戶目錄下.m2/repository/,例如Windows系統(tǒng)是C:甥敳獲admin.m2epository,Linux系統(tǒng)是/home/admin/.m2/repository/,Mac系統(tǒng)是/Users/wxq/.m2/repository/。如果要修改本地倉庫的位置,更改Maven解壓后目錄下conf中的settings.xml文件,找到localRepository標簽,將其值設置為想要的本地路徑,例如:
D:/LocalRepository中央倉庫是由Maven社區(qū)提供的倉庫,其中包含了絕大多數(shù)流行的開源Java依賴。這個倉庫不需要配置,只要有網(wǎng)絡就可以直接使用。如果你想確認一下某依賴在中央倉庫中是否真的存在,可以在http://search.maven.org/#browse搜索。使用中央倉庫下載依賴可能會很慢,所以需要配置一個國內的鏡像地址來代替原中央倉庫的默認地址,推薦使用阿里云的鏡像地址。打開Maven解壓后目錄下conf中的settings.xml文件,在mirrors標簽中添加如下鏡像配置即可。
alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central遠程倉庫是開發(fā)人員自己定制的倉庫,用于存放不想被公開的私有依賴,例如用于存放管理個人/公司開發(fā)的公共jar。遠程倉庫可以在pom.xml中配置,這里不詳細描述步驟了。
認識pom.xml
pom.xml是Maven的基本工作單元,包含了項目的基本信息,聲明了項目依賴、項目如何構建等等。使用Maven時,Maven會自動在當前目錄中查找pom.xml,讀取pom.xml,獲取所需的配置信息,然后執(zhí)行目標任務。pom.xml一般放置在項目源碼的根目錄下。
每個pom.xml都有一個父pom.xml,父pom.xml中包含了一些可以被繼承的默認設置,例如當查找依賴時,如果本地倉庫中沒有,默認會從中央倉庫中查找依賴,但是這個中央倉庫默認是不需要配置的,是因為在父pom.xml中配置了中央倉庫的地址http://repo1.maven.org/maven2。
pom.xml文件元素有很多,這里只介紹常用的部分標簽元素。
<?xml version="1.0" encoding="UTF-8"?>com.alibaba.nacos nacos-all 1.2.1../pom.xml4.0.0com.wind.cloud demo 1.0-SNAPSHOTjar1.81.8 2.2.1.RELEASE com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config ${alibaba-nacos-config-version}compile org.slf4j slf4j-api maven-compiler-plugin 3.5.1${maven.compiler.source}${maven.compiler.target}${maven.compiler.source}truetrue依賴管理
在pom.xml文件的dependencies標簽中通過添加dependency元素添加項目依賴。實際的開發(fā)中,通常將項目的公共依賴定義到父項目的pom.xml中,或者定義到公共項目的pom.xml中。
Maven中的項目依賴是可傳遞的,例如項目A依賴jar包B,項目C依賴項目A構建后的jar包,那么項目C間接依賴jar包B。
有時,這種依賴傳遞會導致依賴的版本沖突,可以通過配置exclusions排除某些不需要的依賴,當然也可以通過optional標記某傳遞依賴是可選的。
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config ${alibaba-nacos-config-version}compile org.slf4j slf4j-apicom.alibaba dubbo 2.6.8compiletrueMaven構建生命周期
Maven構建生命周期(lifecycle)由各個階段組成,每個階段由Maven的插件plugin來執(zhí)行完成。一般情況下,一個項目的Maven構建生命周期由以下幾個階段的序列組成。
生命周期階段描述
Maven構建命令
在pom.xml文件所在的路徑使用mvn命令,Maven會自動查找pom.xml,加載解析并執(zhí)行文件中的構建任務。
一般常用的構建命令有mvn clean package、mvn clean install和mvn clean deploy。
mvn clean package:依次執(zhí)行移除所有上一次構建生成的文件、代碼編譯、單元測試、打包。
mvn clean install:依次執(zhí)行移除所有上一次構建生成的文件、代碼編譯、單元測試、打包、將打好的包安裝到本地倉庫。
mvn clean deploy:依次執(zhí)行移除所有上一次構建生成的文件、代碼編譯、單元測試、打包、將打好的包安裝到本地倉庫、將打好的包發(fā)布到遠程倉庫。
IntelliJ IDEA中使用Maven
最新版本的IntelliJ IDEA會自帶Maven插件,但還是建議通過配置更改成本機安裝的Maven,這樣方便更改Maven相關配置。
新建Maven項目或打開已有的Maven項目后,IDEA會自動識別項目中的pom.xml,在IDEA右側的窗口中會展示pom.xml中使用到的插件和構建聲明周期,例如下圖所示。
雙擊Lifecycle中的某階段,會自動執(zhí)行相應的構建任務。當然,也可以通過IDEA中的Terminal直接執(zhí)行mvn命令。
Eclipse中使用Maven
最新版本的Eclipse會自帶Maven插件,但還是建議通過配置更改成本機安裝的Maven,這樣方便更改Maven相關配置。
新建Maven項目或打開已有的Maven項目后,Eclipse會自動識別項目中的pom.xml。項目代碼在Eclipse中打開后,右鍵選中項目,然后選擇Run As,會列出可執(zhí)行的Maven構建任務。
[Java實戰(zhàn)技術]原創(chuàng),專注分享Java基礎原理分析、實戰(zhàn)技術、微服務架構、分布式系統(tǒng)構建,誠邀點贊關注!
往期推薦:
Spring框架你敢寫精通,面試官就敢問@Autowired注解的實現(xiàn)原理
大廠都聊分布式系統(tǒng),面試不知道分布式鎖如何聊下去
面試官:SpringBoot中關于日志工具的使用,我想問你幾個常見問題
面試被問為什么使用Spring Boot?答案好像沒那么簡單
面試官:Spring框架內置了哪些可擴展接口,咱們一個一個聊
Spring聲明式事務處理的實現(xiàn)原理,來自面試官的窮追拷問
Spring MVC相關的面試題就是無底洞,反正我是怕了
說實話,面試這么問Spring框架的問題,我真扛不住
沒使用加號拼接字符串,面試官竟然問我為什么
面試官一步一步的套路你,為什么SimpleDateFormat不是線程安全的
都說ThreadLocal被面試官問爛了,可為什么面試官還是喜歡繼續(xù)問
Java注解是如何玩轉的,面試官和我聊了半個多小時
如何去除代碼中的多次if而引發(fā)的一連串面試問題
synchronized被這么問,誰能受得了
String引發(fā)的提問,我差點跪了
就寫了一行代碼,被狂虐問了這么多問題
面試官:JVM對鎖進行了優(yōu)化,都優(yōu)化了啥?
總結
以上是生活随笔為你收集整理的c++ 使用nacos_想自学Maven?推荐Maven极简高速入门及常规使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java线程等待按钮点击_java如何用
- 下一篇: TCP客户端服务器(Python)