一文帶你Maven從入門到實戰—入門篇

實戰篇:一文帶你Maven從入門到實戰—實戰篇

Maven第一天

1、 maven的好處?

  1. 使用傳統的web項目開發的crm大小
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pqqFYVvS-1579678448847)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps40.jpg)]html

  2. 一樣的項目使用maven,它的大小
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pJpAhVzq-1579678448847)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps41.jpg)]java

小結: 一樣的項目使用maven工程來實現,它的項目源碼很小,能夠初步推斷它裏面必定沒有jar 包,繼續思考,沒有jar包的項目怎麼可能運行呢?程序員

分析jar包查找的過程
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-oWkrbq1U-1579678448847)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps42.jpg)]web

2、 分析出maven優勢是如何實現的?

1. 依賴管理

就是對jar 包管理的過程,管理的過程參考上面的圖分析過程spring

2.項目的一鍵構建

(編譯-----測試----- 運行 --打包--------------安裝 )apache

什麼是構建?api

指的是項目從編譯-----測試----- 運行 --打包--------------安裝整個過程都交給maven進行管理,這個過程稱爲構建服務器

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-cnujzSgH-1579678448847)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps43.jpg)]

3、 Maven的安裝

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-XtcuhZUD-1579678448848)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps44.jpg)]

下載以後,放的位置網絡

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-zmMmqiIF-1579678448848)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps45.jpg)]

解壓它,獲得一個以下的目錄結構:app

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8PspEL4P-1579678448848)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps46.jpg)]

4、 Maven的配置及倉庫的配置?

1.配置它的環境變量

電腦上需安裝java環境,安裝JDK1.7 + 版本 (將JAVA_HOME/bin 配置環境變量path )

配置 MAVEN_HOME ,變量值就是你的maven安裝 的路徑(bin目錄以前一級目錄)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Jwdr7yOx-1579678448848)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps47.jpg)]

將 %MAVEN_HOME%/bin 加入環境變量 path

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0kYCiDgx-1579678448848)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps48.jpg)]

經過 mvn -v命令檢查 maven是否安裝成功,看到maven的版本爲3.3.9及java版本爲1.7即爲安裝成功。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-q8JtqVZ0-1579678448849)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps49.jpg)]

2.倉庫的配置

2.1倉庫的分類

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-jzMICjGp-1579678448849)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps50.jpg)]

2.2本地倉庫的配置

這個配置文件:maven安裝路徑下\conf\settings.xml文件中

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-69HI4tcV-1579678448849)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps51.jpg)]

5、 分析出maven工程的標準目錄結構

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6aaCgFgl-1579678448849)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps52.jpg)]

Maven目錄結構的規範

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WlXbzII2-1579678448849)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps53.jpg)]

6、 Maven命令?

compile

compile是maven工程的編譯命令,做用是將src/main/java下的文件編譯爲class文件輸出到target目錄下。

cmd進入命令狀態,執行mvn compile,以下圖提示成功:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-THbU4W8d-1579678448850)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps54.jpg)]

查看 target目錄,class文件已生成,編譯完成。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1OU2b5QS-1579678448850)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps55.jpg)]

test

test是maven工程的測試命令,會執行src/test/java下的單元測試類。

cmd執行mvn test執行src/test/java下單元測試類,下圖爲測試結果,運行1個測試用例,所有成功。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Ks5qmY7K-1579678448850)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps56.jpg)]

clean

clean是maven工程的清理命令,執行 clean會刪除target目錄的內容。

package

package是maven工程的打包命令,對於java工程執行package打成jar包,對於web工程打成war包。

install

install是maven工程的安裝命令,執行install將maven打成jar包或war包發佈到本地倉庫。

從運行結果中,能夠看出:

當後面的命令執行時,前面的操做過程也都會自動執行,

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-EEaqgQqI-1579678448850)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps57.jpg)

7、 如何使用eclipse開發maven項目

  1. m2e的插件

由於使用的eclipse版本比較高,因此它自帶了有maven插件。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YUrVl8lm-1579678448850)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps58.jpg)]

點擊」Add」,進入下面的頁面

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4VJXNlJi-1579678448851)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps59.jpg)]

  1. 在eclipse中配置倉庫的位置

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6CeOqooM-1579678448851)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps60.jpg)]

  1. 構建索引

Window—show view ------other----------maven Repositories

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ucKEswXe-1579678448851)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps61.jpg)]

  1. 重構索引

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1OtqyI6T-1579678448852)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps62.jpg)]

  1. 在eclipse中建立一個maven工程

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YS6UKHJt-1579678448852)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps63.jpg)]

  1. 選擇maven project

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DPG3fAd4-1579678448852)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps64.jpg)]

  1. 點next進入下面的界面

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-OHMaY3LC-1579678448852)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps65.jpg)]

  1. 能夠看到一個helloworld工程,但報錯(添加下面的內容就OK了)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-LKziRxOc-1579678448852)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps66.jpg)]

  1. src/java/main建立了一個Servlet,但報錯

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YINLBqkn-1579678448853)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps67.jpg)]

  1. 要解決問題,就是要將servlet-api-xxx.jar包放進來,做爲maven工程應當添加servlet的座標,從而導入它的jar

直接打開helloworld工程的pom.xml文件,再添加座標

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-AnIX9QUh-1579678448853)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps68.jpg)]

添加後自動生成的結果以下:

添加[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-37KEedfv-1579678448853)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps69.jpg)]

添加jar包的座標時,還能夠指定這個jar包未來的做用範圍

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VyYJxXxD-1579678448853)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps70.jpg)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1H8hfz7t-1579678448853)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps71.jpg)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-EWeGBj4z-1579678448853)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps72.jpg)]

Maven次日

1、 回顧

1.什麼是maven?

它是一個軟件開發的管理工具,主要管理的工做是:依賴管理,項目構建

2.使用maven的好處?

可以集中管理jar包,提供一鍵構建

3.maven的安裝及配置

配置:MAVEN_HOME,PATH路徑配置

本地倉庫:

運行:mvn -v

4.經常使用的maven命令

Compile,test,package,install,deploy

5.maven工程是具備必定的目錄結構

src
​	main
​		java(程序主要代碼)
​		resources(配置文件)
​		webapps
​	test
​		java(測試代碼)
​		resources(測試的配置文件)
pom.xml

6.eclipse工具下的maven工程開發

7.在pom.xml文件中如何引入座標

<dependency>
  		<groupId>javax.servlet</groupId>
  		<artifactId>servlet-api</artifactId>
  		<version>2.5</version>
  		<scope>provided</scope>
</dependency>

8.總結

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-RSTaw5Qt-1579678448854)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps73.png)]

2、 Maven工程的拆分與聚合(重點)

一個完整的早期開發好的crm項目,如今要使用maven工程對它進行拆分,這時候就能夠將dao拆解出來造成表現獨立的工程,一樣service,action也都這樣拆分

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-wZwEZgLt-1579678448854)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps74.jpg)]

工程拆分以後,未來還要聚合(聚合就是將拆分的工程進一步組合在一塊兒,又造成一個完整的項目)

爲了達到聚合的目標,因此今天會引入

  • 父工程(maven project)
  • 子模塊(maven module) dao ,service, web

開發步驟:

  1. 建立一個maven父工程

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-T1FNHGwv-1579678448854)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps75.jpg)]

點下一步:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-D66sVRzE-1579678448854)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps76.jpg)]

建立後的父工程以下:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fcRYUTXI-1579678448854)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps77.jpg)]

從它的目錄結構能夠看出,父工程自己不寫代碼,它裏面有一個pom.xml文件,這個文件能夠將多個子模塊中通用的jar所對應的座標,集中在父工程中配置,未來的子模塊就能夠不須要在pom.xml中配置通用jar的座標了

  1. 如何建立這個父工程的一個子模塊?

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VA0JiEem-1579678448855)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps78.jpg)]

點next,進入以下圖:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Wq3XLCR8-1579678448855)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps79.jpg)]

點next,進入以下圖:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fXs2t3oj-1579678448855)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps80.jpg)]

  1. 再次查看父工程的pom.xml文件

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-aBe9N0Ud-1579678448855)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps81.jpg)]

  1. 查看子模塊的pom.xml,發現多了一個 parent結點

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Ikm7YjOA-1579678448856)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps82.jpg)]

而且內部所包含的結點,其實就是父工程的座標

座標=groupId+artifactId+version
(組織名 項目名 版本)

三.衝突問題的解決

1.經過添加 < exclusion>標籤來解決衝突

在父工程中引入了struts-core,hibernate-core,就發現jar包是有衝突的

Javassist存在版本上衝突問題

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-wQGsjW33-1579678448856)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps83.jpg)]

進入下圖:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-sGwao119-1579678448856)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps84.jpg)]

背後的父工程的pom.xml文件中,添加的內容

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YWegXIyr-1579678448856)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps85.jpg)]

依賴調解原則:

maven自動按照下邊的原則調解:

一、第一聲明者優先原則

​ 在pom文件定義依賴,先聲明的依賴爲準。

測試:

若是將上邊struts-spring-plugins和spring-context順序顛倒,系統將導入spring-beans-4.2.4。

分析:

因爲spring-context在前邊以spring-context依賴的spring-beans-4.2.4爲準,因此最終spring-beans-4.2.4添加到了工程中。

二、路徑近者優先原則

​ 例如:A依賴 spirng-beans-4.2.4,A依賴B依賴 spirng-beans-3.0.5,則spring-beans-4.2.4優先被依賴在A中,由於spring-beans-4.2.4相對spirng-beans-3.0.5被A依賴的路徑最近。

測試:

在本工程中的pom中加入spirng-beans-4.2.4的依賴,根據路徑近者優先原則,系統將導入spirng-beans-4.2.4:

<dependency>

  		<groupId>org.springframework</groupId>

  		<artifactId>spring-beans</artifactId>

  		<version>4.2.4.RELEASE</version>

</dependency>

2.使用版本鎖定實現衝突解決

首先父工程中pom.xml文件添加:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gfzlvCMH-1579678448856)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps86.jpg)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-kYBMwRR9-1579678448856)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps87.jpg)]

在使用座標時,對於同一個框架,引入屢次時,它的版本信息就會屢次出現,因此
能夠借用常量的思想,將這些版本號提取出來,在須要用到的時候,直接寫版本的常量名稱就能夠了。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0UQsoaFp-1579678448857)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps88.jpg)]

引用上面的常量

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-GBndfNtz-1579678448857)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps89.jpg)]

3.最終在ssh_parent的pom.xml中引入的座標

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-HiTgUHgn-1579678448857)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps90.jpg)]

3、 依賴關係

依賴具備傳遞性,但不是無限傳遞的,傳遞的規則以下:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-GT6G2f5Q-1579678448857)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps91.jpg)]

解決方法:

若是在依賴傳遞過程當中,致使jar包丟失,咱們的作法很簡單,就是再導入一次座標

四.編寫Service模塊

1.建立一個maven module項目

建立結束後,父工程中結構以下:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-t5XqblTx-1579678448857)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps92.jpg)]

父工程的pom.xml文件以下

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-x4Yznkpa-1579678448858)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps93.jpg)]

2.在service的pom.xml文件中引入dao的jar包

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-X1QprrYN-1579678448858)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps94.jpg)]

Web層的子模塊建立:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fxtZWxPZ-1579678448858)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps95.jpg)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-2mPOj57M-1579678448858)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps96.jpg)]

4、 私服搭建

下載nexus

​ Nexus 是Maven倉庫管理器,經過nexus能夠搭建maven倉庫,同時nexus還提供強大的倉庫管理功能,構件搜索功能等。

​ 下載Nexus, 下載地址:http://www.sonatype.org/nexus/archived/

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-vELTQMXp-1579678448858)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps97.jpg)]

下載:nexus-2.12.0-01-bundle.zip
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-NqpXke87-1579678448858)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps98.jpg)]

安裝 :

1.解壓,進入指定的目錄

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-14t4YpIP-1579678448859)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps99.jpg)]

2.安裝並啓動這個應用程序

cmd進入bin目錄,執行nexus.bat install

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-9q4zI2uU-1579678448859)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps100.jpg)]

安裝成功在服務中查看有nexus服務:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-BFgIR5uN-1579678448859)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps101.jpg)]

卸載nexus

cmd進入nexus的bin目錄,執行:nexus.bat uninstall

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Lk2UYpIb-1579678448859)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps102.jpg)]

查看window服務列表nexus已被刪除。

啓動nexus

方法1:

​ cmd進入bin目錄,執行nexus.bat start

方法2:

​ 直接啓動nexus服務

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-L8B6EqLW-1579678448859)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps103.jpg)]

查看nexus的配置文件conf/nexus.properties

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-sxU6ySxv-1579678448859)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps104.jpg)]

# Jetty section

application-port=8081  	# nexus的訪問端口配置

application-host=0.0.0.0 	# nexus主機監聽配置(不用修改)

nexus-webapp=${bundleBasedir}/nexus 	# nexus工程目錄

nexus-webapp-context-path=/nexus	 # nexus的web訪問路徑

 

# Nexus section

nexus-work=${bundleBasedir}/../sonatype-work/nexus   # nexus倉庫目錄

runtime=${bundleBasedir}/nexus/WEB-INF  # nexus運行程序目錄

訪問:

http://localhost:8081/nexus/

使用Nexus 內置帳戶admin/admin123登錄:

點擊右上角的Log in,輸入帳號和密碼 登錄

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FK1gSqJM-1579678448860)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps105.jpg)]

登錄成功:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4SdPxn6v-1579678448860)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps106.jpg)]

nexus的倉庫有4種類型:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FNkukEtM-1579678448860)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps107.jpg)]

  1. hosted,宿主倉庫,部署本身的jar到這個類型的倉庫,包括releases和snapshot兩部分,Releases公司內部發布版本倉庫、 Snapshots 公司內部測試版本倉庫

  2. proxy,代理倉庫,用於代理遠程的公共倉庫,如maven中央倉庫,用戶鏈接私服,私服自動去中央倉庫下載jar包或者插件。

  3. group,倉庫組,用來合併多個hosted/proxy倉庫,一般咱們配置本身的maven鏈接倉庫組。

  4. virtual(虛擬):兼容Maven1 版本的jar或者插件

    nexus倉庫默認在sonatype-work目錄中:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-E8e1aYWG-1579678448860)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps108.jpg)]

  • central:代理倉庫,代理中央倉庫

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-BGwEq37Z-1579678448860)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps109.jpg)]

  • apache-snapshots:代理倉庫

存儲snapshots構件,代理地址https://repository.apache.org/snapshots/

  • central-m1:virtual類型倉庫,兼容Maven1 版本的jar或者插件

  • releases:本地倉庫,存儲releases構件。

  • snapshots:本地倉庫,存儲snapshots構件。

  • thirdparty:第三方倉庫

  • public:倉庫組

需求 :將ssh_dao的這個工程打成jar包,並放入到私服上去.

配置

第一步: 須要在客戶端即部署dao工程的電腦上配置 maven環境,並修改 settings.xml 文件,配置鏈接私服的用戶和密碼 。

此用戶名和密碼用於私服校驗,由於私服須要知道上傳都 的帳號和密碼 是否和私服中的帳號和密碼 一致。

<server>
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
	<server>
      <id>snapshots</id>
      <username>admin</username>
      <password>admin123</password>
 </server>

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1uem1XQi-1579678448860)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps110.jpg)]

releases 鏈接發佈版本項目倉庫

snapshots 鏈接測試版本項目倉庫

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-sqWO4ti2-1579678448861)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps111.jpg)]

第二步: 配置項目pom.xml

配置私服倉庫的地址,本公司的本身的jar包會上傳到私服的宿主倉庫,根據工程的版本號決定上傳到哪一個宿主倉庫,若是版本爲release則上傳到私服的release倉庫,若是版本爲snapshot則上傳到私服的snapshot倉庫

<distributionManagement>

  	<repository>

  		<id>releases</id>

	<url>http://localhost:8081/nexus/content/repositories/releases/</url>

  	</repository> 

  	<snapshotRepository>

  		<id>snapshots</id>

	<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>

  	</snapshotRepository> 

  </distributionManagement>

注意:pom.xml這裏< id> 和 settings.xml 配置 < id> 對應!

測試

將項目dao工程打成jar包發佈到私服:

一、首先啓動nexus

二、對dao工程執行deploy命令

從私服下載jar包

需求

​ 沒有配置nexus以前,若是本地倉庫沒有,去中央倉庫下載,一般在企業中會在局域網內部署一臺私服服務器,有了私服本地項目首先去本地倉庫找jar,若是沒有找到則鏈接私服從私服下載jar包,若是私服沒有jar包私服同時做爲代理服務器從中央倉庫下載jar包,這樣作的好處是一方面由私服對公司項目的依賴jar包統一管理,一方面提升下載速度,項目鏈接私服下載jar包的速度要比項目鏈接中央倉庫的速度快的多。


​ 本例子測試從私服下載dao 工程jar包。

管理倉庫組

​ nexus中包括不少倉庫,hosted中存放的是企業本身發佈的jar包及第三方公司的jar包,proxy中存放的是中央倉庫的jar,爲了方便從私服下載jar包能夠將多個倉庫組成一個倉庫組,每一個工程須要鏈接私服的倉庫組下載jar包。

打開nexus配置倉庫組,以下圖:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-hutLZ2cW-1579678448861)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps112.jpg)]

上圖中倉庫組包括了本地倉庫、代理倉庫等。

在setting.xml中配置倉庫

​ 在客戶端的setting.xml中配置私服的倉庫,因爲setting.xml中沒有repositories的配置標籤須要使用profile定義倉庫。

<profile>   
	<!--profile的id-->
   <id>dev</id>   
    <repositories>   
      <repository>  
		<!--倉庫id,repositories能夠配置多個倉庫,保證id不重複-->
        <id>nexus</id>   
		<!--倉庫地址,即nexus倉庫組的地址-->
        <url>http://localhost:8081/nexus/content/groups/public/</url>   
		<!--是否下載releases構件-->
        <releases>   
          <enabled>true</enabled>   
        </releases>   
		<!--是否下載snapshots構件-->
        <snapshots>   
          <enabled>true</enabled>   
        </snapshots>   
      </repository>   
    </repositories>  
	 <pluginRepositories>  
    	<!-- 插件倉庫,maven的運行依賴插件,也須要從私服下載插件 -->
        <pluginRepository>  
        	<!-- 插件倉庫的id不容許重複,若是重複後邊配置會覆蓋前邊 -->
            <id>public</id>  
            <name>Public Repositories</name>  
            <url>http://localhost:8081/nexus/content/groups/public/</url>  
        </pluginRepository>  
    </pluginRepositories>  
  </profile>

使用profile定義倉庫須要激活纔可生效。

<activeProfiles>
    <activeProfile>dev</activeProfile>
  </activeProfiles>

配置成功後經過eclipse查看有效pom,有效pom是maven軟件最終使用的pom內容,程序員不直接編輯有效pom,打開有效pom

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ZbjUyNmB-1579678448861)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml36320\wps113.jpg)]

有效pom內容以下:

下邊的pom內容中有兩個倉庫地址,maven會先從前邊的倉庫的找,若是找不到jar包再從下邊的找,從而就實現了從私服下載jar包。

<repositories>
    <repository>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <id>public</id>
      <name>Public Repositories</name>
      <url>http://localhost:8081/nexus/content/groups/public/</url>
    </repository>
    <repository>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>public</id>
      <name>Public Repositories</name>
      <url>http://localhost:8081/nexus/content/groups/public/</url>
    </pluginRepository>
    <pluginRepository>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
    </pluginRepository>
  </pluginRepositories>

測試從私服下載jar包

測試1:局域網環境或本地網絡便可
在service工程中添加以上配置後,添加dao工程的依賴,刪除本地倉庫中dao工程,同時在eclipse中關閉dao工程。
觀察控制檯:

Downloading 
http://localhost:8081/nexus/content/groups/public/cn/itcast/ssh/ssh-dao0423/0.0.1-SNAPSHOT/ssh-dao0423-0.0.1-20160702.123702-1.jar

項目先從本地倉庫找dao,找不到從私服找,因爲以前執行deploy將dao部署到私服中,因此成功從私服下載dao並在本地倉庫保存一份。
若是此時刪除私服中的dao,執行update project以後是否正常?
若是將本地倉庫的dao和私服的dao所有刪除是否正常?

測試2:須要互聯網環境 在項目的pom.xml添加一個依賴,此依賴在本地倉庫和私服都不存在,maven會先從本地倉庫找,本地倉庫沒有再從私服找,私服沒有再去中央倉庫下載,jar包下載成功在私服、本地倉庫分別存儲一份。