Maven學習筆記(一)——綜述篇

Motivation

自學習Java Web以來,除了寫代碼,一是與各種各樣的JAR包打交道,二是不停的輾轉於開發端和服務端兩邊,部署、測試……這些簡單重複勞動是非常消耗時間和耐心的。自從瞭解到Maven可以用來管理依賴、自動化部署,它就被加入到我的學習清單中了。


Maven是什麼?

Maven項目對象模型(POM),可以通過一小段描述信息來管理項目的構建,報告和文檔的軟件項目管理工具。
Maven 除了以程序構建能力爲特色之外,還提供高級項目管理工具。由於 Maven 的缺省構建規則有較高的可重用性,所以常常用兩三行 Maven 構建腳本就可以構建簡單的項目。[1]


從問題出發

上述的概念並不能讓我們對Maven是什麼這個問題建立一個較爲直觀的認識。那麼接下來,我們通過幾個它可以解決的問題來進一步瞭解它。

問題1:Java工程中的依賴管理問題

在編寫Java工程時,我們需要用到各種外部依賴,比如mysql-connector.jar,它是用來通過jdbc鏈接mysql數據庫的外部依賴包。這其中就會存在以下的問題:

①我們需要手動下載所需的JAR包;
②每當創建一個新的工程,需要將這些JAR包再複製一份給新的工程,造成了磁盤空間的浪費;
③如果我們需要直接引用的依賴A依賴於B,那麼我們只能等到測試的時候根據報錯信息,才能發現需要手動引入依賴B;
④使用Github時,需要將這些依賴上傳上去,非常耗時。

總結起來,因爲現在的磁盤越來越大,②不是一個特別尖銳的問題,但是①③④都非常消耗開發者的時間和耐心。

當我們使用Maven來管理這些依賴時,我們只需要在配置文件中寫好需要用到依賴。針對上述的問題,其解決方式爲:

①Maven會自動從本地倉庫或網上的中央倉庫加載依賴文件;
②Maven會在磁盤中固定的位置創建一個本地倉庫,每次查找依賴時先從本地倉庫找,如果不存在,再去中央倉庫下載依賴文件到本地倉庫。這些依賴並不會被複制到工程中去,只是在構建工程的時候纔會將它們打包進WAR包中;
③根據我們聲明的依賴,Maven會自動將這些依賴的依賴也包含進來;
④同②,因爲依賴文件並沒有被複制到工程中,因此commit時只需要上傳代碼和聲明依賴的配置文件(名稱爲pom.xml,將在下文中詳細講解),極大的節省了時間與空間。

問題2:測試與部署的問題

通常,當我們想要在服務器上測試當前寫好的工程時,需要經歷以下步驟:

①打包工程,得到WAR包;
②運行mstsc,打開遠程桌面,訪問服務器;
③將WAR包上傳到服務器上;
④將WAR包改名爲ROOT.war(測試時URL中可以省略工程名);
⑤啓動服務器;

使用Maven來管理我們的工程時,只要編寫好了配置文件,只需一鍵,就可以完成上述操作。全程只需要在開發PC上操作即可,不需要遠程訪問服務器,同樣可以大幅的節省所需的操作。

當然,Maven可以解決的問題很多,我僅給出上述兩個例子用來說明其強大的功能。


系列博文

遵循之前的行文習慣,以下是這套博文的索引。

Maven學習筆記(一)——綜述篇(2018.09.01)


更新日誌

今天剛剛學習完Maven,其中跳過了一些目前暫時用不到的知識,今後用到的時候再返回來學習,這也是我比較喜歡的學習方式。因此開始寫這套博文,一爲保持寫作的習慣,二爲記錄學習所得,避免遺忘;三爲分享心得,以期交流。
——2018.09.01


後記

本以爲Maven的知識少,可以快速的掌握,書越往後看翻得越快。核心的知識掌握了,也跳過了一些其他的章節。總之,這些知識還是需要在今後的實踐中通過犯錯、通過發現問題然後再去查、再回來翻書來加深理解和掌握。

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