Maven 包管理 歷史

Maven 包管理和前端的 Webpack 差不多,都有下面的特點:

  • 從中央倉庫下載第三方包
  • 自動化構建

歷史

以前使用手動編譯 Jar 包,然後再根據 CLASSPATH 去找到對應的類再使用,十分麻煩。

後來出現了 Apache Ant,約定將 Jar 放到 /libs 下去統一編譯。不過這些約定都因人而異,不好管理。

Maven 的出現使得包管理更加方便,會自動幫我們做很多的準備工作,減少配置。

Maven

Maven 有一條原則:約定優於配置

Maven 除了包管理,還有自動化構建,如自動打包,跑測試等。

Maven 的中央倉庫在這裏:https://mvnrepository.com/

Maven 會下載包到本地倉庫,以使用緩存,存放目錄爲 ~/.m2

包屬性

每個包都有一些屬性來唯一確認這個包的資源路徑。

  • groupId 組織
  • artifactId 每個功能對於一個包
  • version 對於的版本
  • scope
    • test: 範圍只在 test 相關代碼中有用
    • provided: 只在編譯用,運行的時候不使用
    • compile: 編譯和運行都用

包衝突

當出現包衝突的時候,如

A -> B -> C0.1
 \ 
  D -> C0.2

Maven 會使用 C0.2,而不是 C0.1,因爲 C0.2 更接近 root。

如果要使用 C0.1,可以將 C0.2 排除,或者 A 下面直接引入 C0.1,這樣 C0.1 就會比 C0.2 離 root 更近了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章