MAVEN1

Maven基礎(chǔ)

B站黑馬視頻

Maven是Apache公司的開源項(xiàng)目,是項(xiàng)目的構(gòu)建工具,用來依賴管理

maven的好處

  1. 能夠有效的減少項(xiàng)目體積,一臺電腦上只需要下載一次相同版本的依賴即可。
  2. 在項(xiàng)目需要jar包的時(shí)候,去倉庫進(jìn)行引用,所以Maven項(xiàng)目比傳統(tǒng)的導(dǎo)入lib再build path所需要的內(nèi)存小很多。

maven的好處如何實(shí)現(xiàn)

  1. 有個(gè)jar包倉庫(Maven倉庫)
  2. 坐標(biāo):作為jar包擁有全球唯一的坐標(biāo)
  3. 舉例: struts2-core-2.3.24.jar
  4. Apache(公司名稱)+Struts2(項(xiàng)目名)+2.3.24(版本信息)
  5. 當(dāng)Maven項(xiàng)目中需要一個(gè)jar包的時(shí)候,只需要在maven項(xiàng)目中配置需要的jar包的坐標(biāo)信息,maven程序根據(jù)jar包坐標(biāo)的信息去jar包倉庫中查找jar包。
  6. maven的兩大核心:
  • 依賴管理:對jar包的統(tǒng)一管理。
  • 項(xiàng)目構(gòu)建:項(xiàng)目在編碼完成之后,對項(xiàng)目進(jìn)行編譯、測試、打包、部署等一系列操作都可以命令來實(shí)現(xiàn)。

maven安裝、配置本地倉庫

  1. maven的下載安裝
  • 直接上官網(wǎng)下載zip包即可。

  • 解壓在沒有中文的路徑。

  • 目錄結(jié)構(gòu)

    1. bin:可執(zhí)行的腳本命令(mvn)
    2. conf:配置文件(settings.xml)
    3. lib:maven項(xiàng)目運(yùn)行需要的jar包,因?yàn)閙aven是純java開發(fā)的。
    4. boot:類加載器。
  • 配置環(huán)境變量

    1. 配置%MAVEN_HOME%到環(huán)境變量中,到bin的上一級。
    2. 配置path環(huán)境變量:%MAVEN_HOME%\bin;

    注意:maven需要java環(huán)境,JDK環(huán)境變量:%JAVA_HOME%

  • 使用mvn -v查看maven版本,以及是否安裝成功。

  1. Maven找jar包流程
  • Maven項(xiàng)目會在本地找倉庫,如果有則依賴進(jìn)去,但是隨著jar包越來越多,項(xiàng)目越來越大,每個(gè)人的電腦里都需要很大的空間來做maven倉庫,這時(shí)候就可以通過私服來解決,存在于本地的局域網(wǎng)內(nèi)的一臺服務(wù)器,存jar包,只需要在這個(gè)局域網(wǎng)里就可以依賴到。前提是安裝了私服服務(wù)器。最后如果再找不到,就到中央倉庫,在互聯(lián)網(wǎng)上,存放了所有開源的jar包,由Maven團(tuán)隊(duì)來維護(hù)。
  • 步驟:
    1. 本地倉庫:本機(jī)
    2. 私服:局域網(wǎng)
    3. 中央倉庫:互聯(lián)網(wǎng)
  1. 配置本地倉庫
  • 默認(rèn)在.m2文件夾
  • 自定義
    1. 在maven目錄的conf文件夾里有個(gè)settings.xml文件,更改里面的localRepository標(biāo)簽,指向自己的倉庫位置。

maven項(xiàng)目標(biāo)準(zhǔn)目錄結(jié)構(gòu)

  1. src:項(xiàng)目的源碼
  • main:主要的
    1. java:代碼等。
    2. resources:配置文件等。
    3. webapp:頁面的素材等。
  • test:測試的
    1. java:代碼等。
    2. resources:配置文件等。
  1. pom.xml:project object module,maven項(xiàng)目的核心配置文件。
  2. target:src里的源碼編譯完后,存放在此。

maven的常用命令

  1. clean:清理target,即是class文件。
由于Maven是JAVA來構(gòu)建的一個(gè)項(xiàng)目,
在maven的文件目錄下有個(gè)lib,
lib里是相關(guān)的jar包,
有個(gè)插件是maven-clean-plugin,
當(dāng)用clean命令的時(shí)候其實(shí)是相當(dāng)于調(diào)用哪個(gè)jar包。
  1. compile:編譯項(xiàng)目,即是生成target文件夾,class文件。背后也是調(diào)用lib里的一個(gè)jar包——maven-compile-plugin。
  2. test:單元測試,即是把test下的測試都運(yùn)行一遍。
  • 先compile編譯,test/java里的java文件,再運(yùn)行。
  • 有要求:單元測試的類名:XxxTest.java
  1. package:以往是通過Export來導(dǎo)出jar file或者war file,現(xiàn)在可以通過package來打包。
  • 先compile再test最后package。
  • 在target目錄下生成jar/war包。
  1. install:安裝,本地多個(gè)項(xiàng)目公用一個(gè)jar包。
  • compile->test->package->install,最后在本地倉庫可以找到。
  • 操作:可以把一些工具類打包,放到本地倉庫,其他項(xiàng)目可以直接去依賴,這樣的好處是如果工具類更改了代碼,其他項(xiàng)目只需要更新一下maven項(xiàng)目就可以了,不需要把jar包重新導(dǎo)入。

maven項(xiàng)目的生命周期(了解)

  • 在maven中存在三套生命周期,每一套生命周期相互獨(dú)立,互不影響。
    1. CleanLifeCycle:清理生命周期:clean
    2. defaultLifeCycle:默認(rèn)生命周期:compile->test->package->install->deploy
    3. siteLifeCycle:站點(diǎn)生命周期site描述這個(gè)項(xiàng)目的相關(guān)信息,如依賴了哪些jar包。
  • 在一套生命周期里,執(zhí)行后面的命令,前面的命令會自動執(zhí)行。

maven整合web項(xiàng)目案例

  1. 配置eclipse中配置maven環(huán)境
  • 配置m2e插件,基本都會自帶maven插件
  • 需要配置maven程序
    1. Perferences->Maven->Installations改為自己的Maven,不使用內(nèi)嵌的Maven配置。
  • 配置User Settings:讓eclipse知道m(xù)aven倉庫的位置。
    1. Perferences->Maven->User Settings改為自己Maven->conf下的settings.xml文件。
  • 構(gòu)建索引:show view->maven Repository選擇本地倉庫右鍵Rebuild Index。

maven整合servlet

  1. 創(chuàng)建一個(gè)Maven Project,普通的Maven項(xiàng)目或者父工程。
  2. 創(chuàng)建一個(gè)簡單的maven項(xiàng)目,create a simple project。
  3. Group Id:組,公司名稱。公司域名的倒序。
  4. Artifact Id:項(xiàng)目名稱。
  5. Version:版本信息。SNAPSHOT:快照版本、測試版本。RELEASES:正式版本。
  6. Packaging:jar則為jar包,war則為web工程,pom則為聚合工程父工程。
  7. 簡單maven工程需要自己去定義一些文件,如war工程需要自己去加WEB-INF下面的web.xml文件,JDK版本也需要自己去定義,否則Update項(xiàng)目會退回默認(rèn)的JDK版本,指定了版本也沒用。
  8. 添加項(xiàng)目jdk編譯插件:
  <build>
    <plugins>
      <!-- 設(shè)置版本為1.8 -->
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugins</artifactId>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugins>
  </build>
  1. 創(chuàng)建一個(gè)servlet,編譯報(bào)錯(cuò),因?yàn)槿笔ar包:serlvet-api-xx.jar。
  • 查找依賴加在pom.xml文件中。
  • <dependencies>標(biāo)簽下各種<dependencie>標(biāo)簽,各個(gè)<dependencie>標(biāo)簽就代表一個(gè)jar包。

maven依賴范圍(<scope>)

依賴范圍 對于編譯classpath有效 對于測試classpath有效 對于運(yùn)行時(shí)classpath有效 例子
compile Y Y Y spring-core
test - Y - Junit
provided Y Y - servlet-api
runtime - Y Y JDBC驅(qū)動
system Y Y - 本地的,Maven倉庫之外的類庫
  • 默認(rèn)是compile
  • 例如tomcat有servlet,則servlet在運(yùn)行時(shí)不需要,因?yàn)閠omcat里有。

運(yùn)行以及調(diào)試maven項(xiàng)目

  1. 右鍵項(xiàng)目Run As:Maven build,Goals:tomcat:run
  2. 右鍵項(xiàng)目Debug As:Maven build,需要關(guān)聯(lián)源碼,否則無法跳到代碼中。

maven的概念模型

[圖片上傳失敗...(image-c4a941-1559904393636)]

  1. 上半部分是核心之一:依賴管理。
  2. 下半部分是核心之二:項(xiàng)目構(gòu)建,通過命令來構(gòu)建項(xiàng)目,如打包、清理等操作。

總結(jié)

  1. 安裝
  2. Maven標(biāo)準(zhǔn)的目錄結(jié)構(gòu)
- ProjectName
- src
  - main
    - java
    - resources
    - [webapp/WEB-INF/web.xml]
  - test
    - java
    - resources
- pom.xml
  1. Maven的常用命令
- clean
- compile
- test
- package:項(xiàng)目的根目錄target目錄
- install:本地倉庫
  1. 使用eclipse開發(fā)maven項(xiàng)目
- 區(qū)別:
  1. 不拷貝jar包
  2. 項(xiàng)目的目錄結(jié)構(gòu)不同
  1. pom.xml:項(xiàng)目對象模型
- 本項(xiàng)目的坐標(biāo)信息
- 本項(xiàng)目jdk編譯版本的信息
- 本項(xiàng)目需要的依賴的坐標(biāo)的信息
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容