21世紀了,還不懂maven?

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

21世紀了,還不懂maven?

2、配置環境變數;

網上有很多此類文章,在這裡就不再過多講解。推薦:https://www。cnblogs。com/chuhongyun/p/11419014。html

大多數jar包來自國外 使用maven預設配置下載很費勁,這個時候可以在maven的配置檔案(maven/config/setting。xml)裡面加入以下程式碼(阿里雲映象),重新下載jar包,速度很快。

alimaven

aliyun maven

central

http://maven。aliyun。com/nexus/content/groups/public/

21世紀了,還不懂maven?

3、Idea配置maven;

21世紀了,還不懂maven?

自動下載;

21世紀了,還不懂maven?

4、專案中使用maven;

21世紀了,還不懂maven?

5、檢視是否從倉庫下載;

21世紀了,還不懂maven?

四、踩坑記錄

1、引入pom。xml檔案中的依賴效能比較卡、慢;

將setting檔案中的映象倉庫地址改成阿里的映象倉庫,具體操作自行google;

2、使用阿里映象倉庫訪問https問題;

因為沒有安全證書,所以需要忽略證書,只需要設定一下即可,如下:

-Dmaven。wagon。http。ssl。insecure=true -Dmaven。wagon。http。ssl。allowall=true

21世紀了,還不懂maven?

五、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