王崟
摘要:Maven作為一個項目管理工具,主要用于基于Java平臺的項目構建。現在很多學校也開設了基于框架的Java Web課程,但很少會單獨開設Maven課程。該文列舉了在框架課程中直接使用Maven來構建項目面臨的問題,提出了改進措施,并介紹了具體的教學內容和實施過程。
關鍵詞:Java web框架課程;Maven
1 引言
Maven作為一個項目管理工具,主要服務于基于Java平臺的項目構建、依賴管理和項目信息管理。在基于框架的Java web項目中不可避免地要使用大量的第三方jar包,需要使用Maven進行項目構建和依賴管理。而高職院校Java服務端開發課程可能會包含Java web、SSM、Spring boot等課程,但一般不會單獨開設Maven課程。框架課程中往往就直接使用Maven來構建項目和管理依賴,這會導致學生只是知道這樣構建,卻不知道各種命令和配置的含義,在以后獨立構建項目的時候會遇到很多困難。本人通過教學經驗,淺談Maven如何融入框架課程教學中,以及教學內容和設計。
2 在框架課程中直接使用Maven來構建項目面臨的主要問題
由于院校一般不會單獨開設Maven課程,在框架課程中往往直接使用Maven來構建項目。使用之前并不會對Maven的基本概念、規則、命令、配置等做詳細的講解。這會導致課程開展過程中遇到下面一些問題:
1) 由于學生缺乏對Maven最基本規則的認識,對Maven生命周期和基本命令不了解。在集成開發環境下直接配置和使用maven構建項目時,只能跟隨步驟操作,不理解每步操作的原因,甚至不知道為什么要這樣操作,也不知道每種操作會產生怎樣的結果和輸出。特別是在集成開發環境中可視化的操作下,一旦遇到問題,不知道如何解決。
2) 管理項目依賴時,往往會把需要的依賴配置直接給學生,學生直接把POM文件拿來使用。而某個框架項目所需的依賴配置并不具有唯一性,可能多種不同的配置方式均可以構建成功。學生缺少對于Maven依賴管理基本規則的理解,不清楚依賴傳遞和依賴調解,更不清楚何時需要排除依賴,導致學生并不清楚某一框架究竟需要哪些依賴,也不能理解其他解決方案。在學生以后的學習和工作中,經常會發現他們會在網上尋找某些框架的依賴配置,如果能用就直接使用,如果不能使用,也不知道問題在哪里。
3) 過于依賴集成開發環境,不同開發環境中配置和使用Maven存在差異,不同的Maven版本和集成開發環境版本也需要合理的搭配。由于不清楚Maven工程的基本結構和構建過程,在升級或者更換開發環境時會覺得很困難。學生往往會跟隨網上的視頻或文章來進行配置,但一旦最后出錯,不知道原因,也無法解決。
4) Maven只是框架開發中使用的構建工具,不是框架開發課程的核心。但教學過程中,特別是初期,由于學生使用Maven構建項目出現問題,無法運行出結果,這樣一來,本來應該用在框架技術本身的時間反而減少了,大量時間用來解決Maven構建項目時出現的問題。
3 教學改進措施
3.1 將Maven的切入時機延后
在框架課程開始不要使用Maven來構建項目,以SSM課程為例,在講解3個框架和進行技能訓練時,還是使用傳統的手動方式來創建工程以及維護第三方Jar包。這樣可以讓學生清楚地了解每種框架需要哪些類庫,框架之間的整合又需要哪些類庫,而且還能切實地感受到手動維護項目依賴的難度,體會其中可能發生的版本沖突。
在框架技術內容全部結束之后,再引入Maven,沿用之前的項目代碼,換成Maven方式進行構建。這樣可以更有針對性的介紹Maven,便于學生將傳統方式的工程和Maven工程結構進行比較。學生也能體會使用Maven管理依賴的優勢,也更能讀懂POM文件中的依賴基本配置。可以讓學生更好地體會Maven構建方式的不同和優勢。
3.2 強化Maven基本命令和命令行下的構建
開始引入Maven時不要在集成開發環境下配置和使用,而是讓學生在命令行中使用命令手動創建、編譯、測試、打包、運行Maven Java項目和Java web項目。通過這種方式讓學生熟悉Maven工程的結構組織,包括源碼結構、輸出文件夾結構、POM文件基本結構。在使用命令構建項目的過程中,熟悉基本命令的作用,了解Maven生命周期的主要階段,每個主要階段做了什么事情。
學生熟悉Maven工程基本結構和命令之后,很容易就可以在集成開發環境下創建Maven工程,也更容易理解各種maven工具菜單的功能。如果在集成開發環境下構建出現問題,可以很容易地切換到命令行下進行構建。
3.3 著重講解Maven依賴管理
Maven的一大功能就是管理依賴,學生必須理解Maven的依賴配置,了解依賴的幾種范圍,理解依賴的傳遞性,以及存在多條依賴路徑時,Maven如何選擇。更進一步的,還需要理解什么情況下會產生依賴沖突,何時需要排除依賴,依賴版本管理和依賴優化。這些基本概念均可以在實踐操作中通過修改POM來進行測試。學生通過這部分內容的學習,就能夠看懂常規的依賴配置,還可以很好地進行修改和優化。
3.4 教會學生按需搜索依賴
工作中不可避免的需要自己去查找和使用某些依賴,這時不能完全依靠網上的文章,需要自己去倉庫中搜索依賴坐標,搜索的同時也要能看懂該依賴引入的其他傳遞依賴。教學過程中要布置任務讓學生自行尋找和配置依賴,并合理地去處理傳遞依賴可能帶來的沖突。
4 具體教學內容和實施過程
實際教學中是將Maven內容安排在SSM課程的后續實訓課程中,在實訓開始階段講解和練習Maven。將SSM課程中幾個典型案例使用Maven方式進行構建,先在命令行下使用命令構建,熟悉之后再使用集成開發環境。在技能訓練過程中穿插Maven基本知識點和配置的講解。