21世紀了,還不懂maven?
maven是一個Java語言編寫的開源專案管理工具,是Apache軟體基金會的頂級專案。主要用於專案構建,依賴管理,專案資訊管理。
對於程式猿來講,maven再熟悉不過了,關於maven的文章也很多,但是都沒有抓住重點,那麼你有福利了,來聽我將maven的故事,保準你一聽就懂,一看就會,在學習maven的道路上暢通無阻。
你可以把maven當做一個超市,超市裡有柴米油鹽醬醋茶等等很多材料,你需要哪個材料只需要透過一定的手段拿即可。對於剛入門的程式猿來講,他(她)會認為是這樣的:1、maven就是將jar包存放到maven本地倉庫,本地倉庫資料夾下的。m2資料夾下。2、pom。xml配置jar在maven本地倉庫的座標後jar會上傳到中央倉庫。這樣理解也對。
”小朋友,你是不是 有很多問號?“本次是入門基礎,想深入瞭解maven,敬請等待下次分享。
一、maven的優點與弊端
優缺點是我從網上摘抄的,基本沒毛病。
優點如下:
1、簡化了專案依賴管理。
2、易於上手,對於新手可能一個“mvn clean package”命令就可能滿足他的工作。
3、便於與持續整合工具(jenkins)整合。
4、便於專案升級,無論是專案本身升級還是專案使用的依賴升級。
5、有助於多模組專案的開發,一個模組開發好後,釋出到倉庫,依賴該模組時可以直接從倉庫更新,而不用自己去編譯。
6、maven有很多外掛,便於功能擴充套件,比如生產站點,自動釋出版本等
缺點如下:
1、maven是一個龐大的構建系統,學習難度大
2、maven採用約定優於配置的策略(convention over configuration),雖然上手容易,但是一旦出了問題,難於除錯。
3、當依賴很多時,m2eclipse 老是搞得Eclipse很卡。
4、中國的網路環境差,很多repository無法訪問,比如google code, jboss 倉庫無法訪問等。
二、使用maven好處
1、 maven不僅是構建工具,它還是依賴管理工具和專案管理工具,提供了中央倉庫(也可以是私有倉庫),能夠幫我們自動下載構件。
2、為了解決的依賴的增多,版本不一致,版本衝突,依賴臃腫等問題,它透過一個座標系統來精確地定位每一個構件(artifact)。
3、還能幫助我們分散在各個角落的專案資訊,包括專案描述,開發者列表,版本控制系統,許可證,缺陷管理系統地址。
4、maven還為全世界的Java開發者提供了一個免費的中央倉庫,在其中幾乎可以找到任何的流行開源軟體。透過衍生工具(Nexus),我們還能對其進行快速搜尋。
5、maven對於目錄結構有要求,約定優於配置,專案間切換省學習成本。
三、教你快速入門
1、下載maven元件(最新版本:3。6。3);
地址://maven。apache。org/download。cgi
2、配置環境變數;
網上有很多此類文章,在這裡就不再過多講解。推薦:https://www。cnblogs。com/chuhongyun/p/11419014。html
大多數jar包來自國外 使用maven預設配置下載很費勁,這個時候可以在maven的配置檔案(maven/config/setting。xml)裡面加入以下程式碼(阿里雲映象),重新下載jar包,速度很快。
3、Idea配置maven;
自動下載;
4、專案中使用maven;
5、檢視是否從倉庫下載;
四、踩坑記錄
1、引入pom。xml檔案中的依賴效能比較卡、慢;
將setting檔案中的映象倉庫地址改成阿里的映象倉庫,具體操作自行google;
2、使用阿里映象倉庫訪問https問題;
因為沒有安全證書,所以需要忽略證書,只需要設定一下即可,如下:
-Dmaven。wagon。http。ssl。insecure=true -Dmaven。wagon。http。ssl。allowall=true
五、maven常用的命令
1、建立maven普通專案;
mvn archetype:create -DgroupId=packageName -DartifactId=projectName
2、建立Maven的Web專案;
mvn archetype:create -DgroupId=packageName
-DartifactId=webappName
-DarchetypeArtifactId=maven-archetype-webapp
3、編譯原始碼;
mvn compile
4、編譯測試程式碼;
mvn test-compile
5、編譯測試程式碼;
mvn test
6、打包;
mvn package
7、清除產生的專案;
mvn clean
8、生成eclipse、idea專案;
mvn eclipse:eclipse
mvn idea:idea
9、檢視當前專案已被解析的依賴;
mvn dependency:list
10、上傳到私服。;
mvn deploy
11、強制檢查更新,由於快照版本的更新策略(一天更新幾次、隔段時間更新一次)存在,如果想強制更新就會用到此命令;
mvn clean install-U
12、原始碼打包;
mvn source:jar
13、釋出第三方Jar到本地庫中;
mvn install:install-file
-DgroupId=xxx。xx。xxxx
-DartifactId=xxx
-Dversion=0。0。1
-Dpackaging=jar
-Dfile=路徑/xxx-0。0。1。jar