《Maven实战》(许晓斌)导读(读书笔记第二次读后感)
生活随笔
收集整理的這篇文章主要介紹了
《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实战》(许晓斌)导读(读书笔记第二次读后感)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: level2行情接口十档行情快照如何去运
- 下一篇: 记录性能测试脚本开发的过程