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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

《Maven实战》(许晓斌)导读(读书笔记第二次读后感)

發布時間:2023/12/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Maven实战》(许晓斌)导读(读书笔记第二次读后感) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一章 Maven簡介

  • Maven是構建工具,但同時還是jar包管理工具、項目信息管理工具
  • 與Make、Ant比較,更為先進

第二章 Maven的安裝和配置

  • Windows和Unix上安裝都很簡單,下載壓縮包解壓,再配置環境變量即可
  • jar包默認在~./m2目錄
  • 可以使用eclipse的maven插件m2eclipse,但不要使用eclipse內嵌的maven
  • 使用maven時如內存不夠等錯誤,可通過設置MAVEN_OPS環境變量設置java內存大小
  • .m2下的settings.xml是用戶的,maven的conf下settings.xml是全局的

第三章Maven使用入門

入門

  • 編寫pom.xml、寫java主代碼、寫測試代碼就可以使用maven打包運行
  • 命令mvn archetype:generate生成項目骨架
  • 也可使用m2eclipse導入或者生成maven項目

POM

  • project是根元素
  • modelVersion對于maven2和3,必須是4.0.0
  • groupId、artifactId、version是基本坐標(artifact是人工制品的意思)
  • groupId是項目屬于哪個組
  • artifactId是項目或者子項目或者模塊
  • 推薦每個maven聲明name,方便交流

maven編譯

  • mvn clean compile
  • clean是清理target,compile是編譯

maven測試

  • scope設置為test,主代碼import這個jar會報錯
  • mvn clean test
  • 這時應該會報錯。因為測試一般用到junit,需要jdk1.5以上,而maven的compile插件由于歷史原因默認1.3
  • pom.xml增加build-plugins-plugin,maven-compiler-plugin的source和target指定為1.5

打包運行

  • 打包mvn clean package
  • 打包默認是jar
  • 安裝mvn clean install
  • install會安裝到本地的倉庫
  • 默認的jar不能執行main方法,因為mainfest里沒有。設置pom,plugin,maven-shade-plugin,mainclass設定為你的class,再看META-INF/MANIFEST.MF

第4章 背景案例

  • 主要uml設計、java包說明等,就3頁

第5章 坐標和依賴

這一章非常重要

  • maven坐標還有classifier,主要是附屬構件,比如一個是jdk1.4的,一個是jdk1.5的。不能定義,只能插件生成
  • maven依賴里有type,默認是jar,對應項目的packaging,一般不用聲明
  • 依賴范圍有5個。compile\test\runtime,provided是編譯測試有效,運行無效,如servlet-api,因為容器已提供。system制定本機系統的路徑,不通過maven倉庫,不可移植,謹慎使用還有一個import,對編譯、測試、運行不起作用。

傳遞性依賴

  • pom里引入了a.jar,則a用到的jar都會自動引入
  • 自動引入是看中央倉庫里這個jar平行的pom文件
  • 當然a用到了b.jar,那b用到jar也會傳遞,一直傳遞下去
  • 依賴范圍對依賴的傳遞有影響

依賴調解

  • 依賴了同一個jar,則路徑最近者優先
  • 路徑一樣則第一聲明者優先
  • optional為true可選依賴,不會被傳遞

最佳實踐

  • 可排除一些傳遞的依賴
  • 最好使用properties定義統一的jar版本
  • mvn dependency:list依賴樹(大家更常用tree)
  • mvn dependency:analyze分析依賴,項目用到但沒聲明的依賴,還有聲明了但沒用到的依賴(不能隨便刪除,要分析)

第六章 倉庫
第七章 生命周期和插件
略。

第八章 聚合與繼承

  • 本章也非常重要
  • 聚合在aggregator(名字隨便定)模塊設置modules-module,aggregator一般放在上層
  • 繼承在子項目里配置relativePath,比如../xxx-parent/pom.xml
  • 繼承用到dependencyManagement
  • 繼承后以來的jar可以不寫version,父那里寫了,依賴范圍也是
  • import在dependencyManagement下才有效,配了后把某項目的依賴全部弄過來
  • 如果不用dependencyManagement,父的全部jar子都必須繼承,這樣不太推薦
  • 聚合為了方便構建;繼承為了消除重復配置
  • 父知道聚合了誰,子不知道被誰聚合;子知道繼承了誰,父不知道被誰繼承
  • 約定由于配置,convention over confiuration
  • 所有的pom都是默認繼承超級pom,超級pom在lib的model-build的jar里
  • 反應堆reactor,模塊構建順序,可設置,通過修改配置和命令

第九章 使用nexus創建私服
第十章 使用maven進行測試
第十一章 使用Hudson進行持續集成

幾年前已搭建過nexus,使用過jenkins、cargo,略。

第十二章 使用maven構建web應用

  • web的目錄結構src-main-webapp
  • 默認是jar,需要packaging:war
  • 制定war包名字:build-finalName

第十三章 版本管理
略。產品需要版本多一些。項目較少。svn專人管理。

第十四章 靈活的構建

  • 開發環境、測試環境、生產環境的多環境構建很重要,一般都要用到
  • 通過profiles定義各個環境
  • 在代碼的配置文件中定義變量${aaa}
  • 在pom里制定aaa在各個環境中的值
  • 在pom里資源過濾
  • 打包時命令加-P,mvn clean install -Pdev,假設開發環境在pom的profile里id定義為dev
  • 可以激活多個profile,mvn clean install -Pdev-x,dev-y
  • 可以根據屬性激活,mvn clean install -Pdev=x。前提需要profile里配置name和value
  • 可以設置默認激活,可以根據文件是否存在來激活
  • profile除了pom,也可以在settings。xml配置。
  • 資源過濾除了可以過濾resource,也可以過濾webapp里,用webResources

第十五章 生成項目站點
第十六章 m2eclipse
第十七章 編寫maven插件
第十八章 Archetype
附錄
略。這些不太常用,或者比較簡單不太重要。

我的感想

不足:

  • 沒有列出maven推薦的全部目錄,比如filters等
  • Hudson,也就是jenkins章節過于簡單
  • 多環境配置profiles章節不夠完整,最為常用的目錄配置沒有講,只講了變量配置
  • 好像沒有介紹-X等debug命令項,和最一些報錯的注意事項(也許我讀漏了)
  • eclipse插件我遇到過蠻多問題,書里沒有詳細解說,或者作者喜歡命令行
  • 對老項目的遷移也沒怎么涉及

總的來說,還是很優秀的書。因為:

  • 就這一本,沒別的
  • 最近買了方志朋的《深入理解spring cloud與微服務構建》,看了后,實在無語,襯托出許曉斌的很好
  • 幾年后再次認真閱讀,感受不同。揭開了幾年里的一些積累的疑惑

轉載于:https://www.cnblogs.com/ouyida3/p/9190859.html

總結

以上是生活随笔為你收集整理的《Maven实战》(许晓斌)导读(读书笔记第二次读后感)的全部內容,希望文章能夠幫你解決所遇到的問題。

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