日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

maven(一) 基础知识

發布時間:2024/9/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 maven(一) 基础知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. maven介紹
    • 2. maven生命周期
    • 3. snapshot版本和release版本的區別
    • 4. maven倉庫
    • 5. plugin插件
    • 6.maven命令
    • 7. 繼承和聚合

1. maven介紹

Maven 翻譯為"專家"、“內行”,是 Apache 下的一個純 Java 開發的開源項目。基于項目對象模型(縮寫:POM)概念,
Maven 是一個項目管理工具,可以對 Java 項目進行構建、依賴管理。

Maven 下載地址:http://maven.apache.org/download.cgi
maven的安裝依賴于java環境,需要先安裝java環境。

2. maven生命周期

maven有三個標準的生命周期:

  • clean:項目清理的處理
  • default(或 build):項目部署的處理
  • site:項目站點文檔創建的處理

每一個生命周期由許多階段(phase)組成,如build生命周期主要有validate compile test package install deploy。

注意:

  • 當一個階段通過 Maven 命令調用時,例如 mvn package ,只有該階段之前以及包括該階段在內的所有階段會被執行。
  • 生命周期是相互獨立的。如package是不包含clean的。

3. snapshot版本和release版本的區別

? ? ? ?snapshot快照是一種特殊的版本,指定了某個當前的開發進度的副本。不同于常規的版本,Maven 每次構建都會在遠程倉庫中檢查新的快照,Snapshot 版本代表不穩定、尚處于開發中的版本,Release 版本則代表穩定的版本。

什么情況下該用 SNAPSHOT?
? ? ? ?協同開發時,如果 A 依賴構件 B,由于 B 會更新,B 應該使用 SNAPSHOT 來標識自己。這種做法的必要性可以反證如下:
a. 如果 B 不用 SNAPSHOT,而是每次更新后都使用一個穩定的版本,那版本號就會升得太快,每天一升甚至每個小時一升,這就是對版本號的濫用。
b.如果 B 不用 SNAPSHOT, 但一直使用一個單一的 Release 版本號,那當 B 更新后,A 可能并不會接收到更新。因為 A 所使用的 repository 一般不會頻繁更新 release 版本的緩存(即本地 repository),所以B以不換版本號的方式更新后,A在拿B時發現本地已有這個版本,就不會去遠程Repository下載最新的 B

不用 Release 版本,在所有地方都用 SNAPSHOT 版本行不行?
? ? ? ?不行。正式環境中不得使用 snapshot 版本的庫。 比如說,今天你依賴某個 snapshot 版本的第三方庫成功構建了自己的應用,明天再構建時可能就會失敗,因為今晚第三方可能已經更新了它的 snapshot 庫。你再次構建時,Maven 會去遠程 repository 下載 snapshot 的最新版本,你構建時用的庫就是新的 jar 文件了,這時正確性就很難保證了。

4. maven倉庫

Maven 倉庫有三種類型:

  • 本地(local)
  • 中央(central)
  • 遠程(remote)

本地倉庫
? ? ? ?Maven 的本地倉庫,在安裝 Maven 后并不會創建,它是在第一次執行 maven 命令的時候才被創建。運行 Maven 的時候,Maven 所需要的任何構件都是直接從本地倉庫獲取的。如果本地倉庫沒有,它會首先嘗試從遠程倉庫下載構件至本地倉庫,然后再使用本地倉庫的構件。
? ? ? ?默認情況下,不管Linux還是 Windows,每個用戶在自己的用戶目錄下都有一個路徑名為 .m2/respository/ 的倉庫目錄。Maven 本地倉庫默認被創建在 %USER_HOME% 目錄下。要修改默認位置,在 %M2_HOME%\conf 目錄中的 Maven 的 settings.xml 文件中定義另一個路徑。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><localRepository>C:/MyLocalRepository</localRepository> </settings>

中央倉庫鏡像
Maven 倉庫默認在國外, 國內使用難免很慢,我們可以更換為阿里云的倉庫。

方法很簡單,修改 maven 根目錄下的 conf 文件夾中的 setting.xml 文件,在 mirrors 節點上,添加內容如下:

<mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf> </mirror> </mirrors>

5. plugin插件

? ? ? ?插件是maven的核心,所有的功能都有插件來提供。每個插件都有多個目標goal,每個goal是對插件功能的細分。
注意,插件的運行是需要綁定到生命周期的某一個階段的。

6.maven命令

? ? ? ?maven的命令有兩種,一種是插件命令;一種是生命周期命令,他是maven為我們集成好的,多個插件命令的有序集合(也照應maven的功能都是由插件提供的),如mvn test , mvn package等等,方便很常用。

7. 繼承和聚合

  • 依賴的范圍
compiletestprovided
編譯不可以
測試
運行不可以不可以
舉例依賴默認范圍junitservlet-api

依賴原則:
1.路徑最短優先原則。如果本工程就有,肯定用本工程的。
2.路徑相同時:
如果在同一個pom文件中有兩個相同的依賴(版本不同),后聲明的會覆蓋先聲明的。但這種用法肯定是錯誤的。
如果在不同的pom文件,則依賴先聲明的。即A依賴于B和C,B和C中分別有d1和d2依賴,則因為A中先聲明依賴的B,所以A依賴的為d1.

  • 聚合

利用maven開發時工程一般是多模塊,利用聚合我們可以將多個模塊聚合在一起:

<!--包含的子模塊--><modules><module>cloud-api</module><module>cloud-common</module><module>cloud-web</module><module>cloud-view</module></modules>

這樣我們只需要對父工程進行打包,子模塊也跟著被打包。maven在打包子模塊時會自動安排順序,即會先打包其他再打包實際的web工程。
注意聚合工程的<packaging>pom</packaging>”,即必須為pom!

  • 繼承

繼承主要是為了消除重復。父工程中除了artifactId和name,基本上所有的元素都可以被繼承。父工程可以利用dependencyManagement來管理依賴版本。

聚合和繼承在開發中經常作為同一個同時使用,但兩者并無關系。聚合是為了方便同時打多個包,繼承是為了消除重復。

總結

以上是生活随笔為你收集整理的maven(一) 基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。