Maven是屬於apache軟件基金會下一個開源免費的項目,是跨平臺的項目管理工具, Maven採用了一種被稱之爲Project Object Model (POM)概念來管理項目,全部的項目配置信息都被定義在一個叫作POM.xml的文件中。主要服務於基於Java平臺的項目構建,依賴管理和項目信息管理,能夠在代碼進行部署的過程當中自動解決項目中代碼的依賴環境,須要從maven的鏡像倉庫中進行下載依賴環境,一般下載比較慢,企業中會在公司內部搭建nexus(私服),將構建項目中的依賴環境保存到nexus服務器中,提升訪問速度。html
POM項目對象模型,是Maven工程的基本工做單元,是一個XML文件,包含了項目的基本信息,用於描述項目如何構建,聲明項目依賴等等。
執行任務或目標時,Maven會在當前目錄中查找POM。讀取POM,獲取所需的配置信息,而後執行目標。
POM中能夠指定如下配置:項目依賴、插件、執行目標、項目構建profile、項目版本、項目開發列表、相關郵件列表信息。java
Maven的功能:node
- maven模型的JAVA項目對源代碼、單元測試代碼、資源、jar包等有規範和目錄規劃;
- 解決項目間的依賴關係、版本不一致、版本衝突等問題;
- 合理的jar管理機制。
.linux
maven使用場景(從運維人員的角度來看):web
- 原來項目中的jar包必須手動複製、粘貼到WEB-INF/lib項目下,而藉助maven,能夠將jar包僅僅保存在倉庫中,有須要使用的工程只須要引用這個文件,並不須要重複複製到工程中;
- 原來的項目中所須要的jar包都是提早下載好的,而maven在聯網狀態下會自動下載所須要的jar包。首先在本地倉庫中找,找不到就在網上進行下載;
- 原來的項目中一個jar包所依賴的其餘jar包必須手動導進來,而maven會自動將被依賴的jar包導進來;
- 原來的項目一個項目就是一個工程,而藉助maven能夠將一個項目拆分紅多個工程;
項目構建過程包括:清理項目→編譯項目→測試項目→生成測試報告→打包項目→部署項目這幾個步驟,這六個步驟就是一個項目的完整構建過程。
Maven倉庫
在Maven的專業術語中,倉庫是指一個位置,Maven倉庫是項目中依賴的第三方庫,這個庫所在的位置叫作倉庫。在Maven中,任何一個依賴、插件或者項目構建的輸出,均可以稱之爲構件。數據庫
Maven倉庫能幫助咱們管理構件(主要是Jar),它就是放置全部JAR文件(WAR、ZIP、POM等等)的地方。apache
Maven倉庫有三種類型:本地、中央、遠程。
本地倉庫
Maven 的本地倉庫,在安裝 Maven 後並不會建立,它是在第一次執行 maven 命令的時候才被建立。vim
運行 Maven 的時候,Maven 所須要的任何構件都是直接從本地倉庫獲取的。若是本地倉庫沒有,它會首先嚐試從遠程倉庫下載構件至本地倉庫,而後再使用本地倉庫的構件。緩存
默認狀況下,無論Linux仍是 Windows,每一個用戶在本身的用戶目錄下都有一個路徑名爲 .m2/respository/ 的倉庫目錄。
中央倉庫
Maven中央倉庫是由Maven社區提供的倉庫,其中包含了大量經常使用的庫。
Maven內置了遠程公用倉庫
中央倉庫包含了絕大多數流行的開源Java構件,以及源碼、做者信息、SCM、信息、許可證信息等。通常來講,簡單的Java項目依賴的構件均可以在這裏下載到。tomcat
中央倉庫的核心概念:
一、這個倉庫由 Maven 社區管理;
二、不須要配置便可使用;
三、須要經過網絡才能訪問。
遠程倉庫(第三方倉庫)
第三方倉庫又稱爲內部中心倉庫,也稱爲私服。
私服:通常是由公司本身設立的,只爲公司內部共享使用。它既能夠做爲公司內部構件協做和存檔,也能夠做爲公用類庫鏡像緩存,減小在外部訪問和下載的頻率(使用了私服就減小了對中央倉庫的訪問)。
瞭解更多可參考Maven教程
安裝Maven,須要依賴jdk1.8版本
所需軟件包(提取碼:u27c)能夠下載我提供的,也可根據需求來自行下載
一、配置jdk環境
#檢測當前jdk,並卸載掉 [root@maven ~]# rpm -qa | grep jdk copy-jdk-configs-1.2-1.el7.noarch java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 [root@maven ~]# rpm -e java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 --nodeps [root@maven ~]# rpm -e java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 --nodeps #解壓jdk包 [root@maven ~]# tar zxf jdk-8u211-linux-x64.tar.gz -C /usr/local/ [root@maven ~]# vim /etc/profile .... export JAVA_HOME=/usr/local/jdk1.8.0_211 export JRE_HOME=/usr/local/jdk1.8.0_211/jre export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH [root@maven ~]# source /etc/profile # 執行文件刷新變量 [root@maven ~]# java -version # 查看當前版本 java version "1.8.0_211" Java(TM) SE Runtime Environment (build 1.8.0_211-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
二、部署Maven
[root@maven ~]# wget https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz [root@maven ~]# tar zxf apache-maven-3.6.1-bin.tar.gz [root@maven ~]# mv apache-maven-3.6.1/ /usr/local/maven [root@maven ~]# vim /etc/profile export MAVEN_HOME=/usr/local/maven export PATH=$PATH:$MAVEN_HOME/bin [root@maven ~]# source /etc/profile # 執行腳本使配置生效 [root@maven ~]# mvn -v # 執行命令出現以下版本信息表示安裝成功 Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00) Maven home: /usr/local/maven Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_211/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-514.el7.x86_64", arch: "amd64", family: "unix"
1)構建項目進行測試
[root@maven ~]# mkdir /tmp/testdir [root@maven ~]# cd /tmp/testdir/ #執行下面命令進行測試 [root@maven testdir]# mvn archetype:generate -DgroupId=com.zyz.maven.quickstart -DartifactIdk=testapp -DarchetypeArtifactId=maven-archetype-quickstart #忽略一些信息,到以下行時輸入執行命令時指定的項目名稱,接下來的直接按回車保持默認便可 Define value for property 'artifactId': testapp #當出現以下信息是,表示安裝成功,尤爲是第一行success [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 21:50 min [INFO] Finished at: 2020-05-02T13:27:26+08:00 [INFO] ------------------------------------------------------------------------ #建立一個maven項目(Java類型),有交互就回車確認,可加-DinteractiveMode=false取消交互過程 #上述命令解釋以下: # archetype:generate:建立一個簡單的java項目; # archetype 也就是原型,是一個 Maven 插件,準確說是一個項目模板,它的任務是根據模板建立一個項目結構。 #使用 quickstart 原型插件建立一個簡單的 java 應用程序 # -DgroupId:組織名,公司網址的反寫(反向域名)+項目名稱; # -DartifactIdk:項目名或者模塊名; # - DarchetypeArtifactId:指定 ArchetypeId,maven-archetype-quickstart,建立一個簡單的 Java 應用; # -DinteractiveMode: 是否使用交互模式。
生成的文件測試解釋
[root@localhost testdir]# ls # 上述命令執行成功後,會在當前目錄下生成以項目名稱命名的目錄 testapp [root@maven testdir]# cd testapp/ # 進入 [root@maven testapp]# ls #查看目錄下生成的文件 pom.xml src [root@maven testapp]# cat pom.xml # pom文件參數解釋 project: 根,這是對Project添加一些根元素的約束信息 modelversion:指定當前maven模型的版本號 grouopId:應該是公司名或者組織名。通常來講groupID有三個部分組成,每一個部分之間以「.」分隔,第一部分是項目的用途,好比用於商業的就是com,用於非商業盈利性組織的就是org,第二部分是公司名,好比tentxun/baidu/alibaba,第三部分是你的項目名 artifactId:能夠認爲是maven構建的項目名,好比你的項目中有子項目,就可使用「項目名-子項目的命名方式 packaging: 指定生成的格式(jar/war/rar/pom/ear) version:版本號,SNAPSHOT意味快照,說明該項目還在開發中,是不穩定的版本 name:項目的名稱, Maven產生的文檔用 url:項目主頁的url,Maven產生的文檔用 dependencies標籤:指定開發構建(jar包) JUnit是一個Java語言的單元測試框架
構建項目成功後,也將會在當前用戶的宿主目錄下生成本地倉庫。
[root@maven testapp]# ls ~/.m2/repository/ #查看本地倉庫目錄結構 antlr asm commons-codec commons-collections commons-io commons-lang jdom net org [root@maven testapp]# ls ~/.m2/repository/antlr/antlr/2.7.7/ antlr-2.7.7.pom antlr-2.7.7.pom.sha1 _remote.repositories
2)Maven配置文件
Maven 的配置文件名稱爲:setting.xml。它被存放在兩個地方:
、/usr/local/maven/conf/settings.xml #安裝的目錄
、~/.m2/settings.xml #用戶的家目錄
其中,安裝目錄配置又是全局配置,用戶目錄配置被稱爲用戶配置。若是二者都存在,他們的內容將被合併,而且用戶範圍的settings.xml優先。
默認用戶目錄不存在配置文件,能夠copy maven安裝目錄下的settings.xml到用戶目錄。
關於settings.xml文件經常使用的的配置修改以下:
一、修改本地倉庫存儲路徑,默認值是~/.m2/repository 可在settings.xml中的localrepository修改爲本身須要的目錄;
二、若是構建服務器由於網絡故障或者安全問題不能與遠程倉庫相連,須要離線模式下,設置offline屬性,設置爲true,默認爲false;
三、修改中央倉庫服務器,修改配置文件中便籤,添加或修改鏡像地址;
四、設置代理地址,修改配置文件中proxy標籤,定義代理服務器,實現maven的代理。
因爲中央倉庫服務器是國外的,在國內使用的話,下載比較慢,因此建議國內用戶使用阿里雲倉庫地址
3)配置使用阿里雲倉庫地址
[root@maven testapp]# cd /usr/local/maven/conf/ [root@maven conf]# vim settings.xml ............................. <url>http://my.repository.com/repo/path</url> </mirror> --> # 跳轉到158行,寫入以下內容 <mirror> <id>aliyun</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>https://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> </mirrors> # 在此行上面寫入 #mirror就是鏡像,主要提供一個方便地切換遠程倉庫地址的途徑 #<mirrorOf>central</mirrorOf>裏是要替代的倉庫的id。代理原有倉庫,若是填寫*表示替換全部倉庫
4)Maven經常使用命令
[root@maven testapp]# pwd #確認當前目錄是以前構建的項目下 /tmp/testdir/testapp [root@maven testapp]# mvn compile # 編譯(在編譯的過程當中,能夠看到使用的是阿里雲的倉庫) [INFO] BUILD SUCCESS # 出現此行說明編譯成功 #全部命令都同樣,只要最後幾行有上述信息,就表示執行成功 [root@maven testapp]# ls target/ #會看到目錄下會生成新的目錄target classes maven-status #target:打包輸出目錄,如打包好的jar或war文件; #target/classes:編譯輸出目錄; [root@maven testapp]# mvn test # 測試命令 [root@maven testapp]# ls target/test-classes/ com #target/test-classes:測試編譯輸出目錄 [root@maven testapp]# mvn clean #清理命令(就是將編譯和測試生成的目錄刪除) [root@maven testapp]# ls # 能夠看到target目錄已經沒了 pom.xml src [root@maven testapp]# mvn package # 打包命令 [root@maven testapp]# ls target/ # 會生成一個jar包 classes maven-archiver maven-status surefire-reports testapp-testapp.jar test-classes [root@maven testapp]# mvn install #安裝命令(做用是將壓縮文件jar包或者war包上傳到本地倉庫) # 直接使用maven install命令對項目進行上傳到本地倉庫, # 那麼前面全部的步驟將會自動執行,好比源代碼的編譯、打包等等。 [root@maven testapp]# mvn deploy #發佈(將包上傳到私服,如今我這裏尚未私服,因此會失敗)
5)mvn命令的生命週期
maven基於構建生命週期這個中心概念,這意味着構建和分發特定項目的過程被明肯定義,具體以下:
6)構建一個web項目,打出war包,並部署到Tomcat
[root@maven testdir]# mvn archetype:generate -DgroupId=cn.test.testweb -DartifactId=testweb -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false #構建web項目 #生成的目錄結構以下: [root@maven testdir]# ls testweb/ pom.xml src [root@maven testdir]# cat testweb/src/main/webapp/index.jsp <html> <body> <h2>Hello World!</h2> </body> </html> [root@maven testdir]# cd testweb/ #進入項目目錄下 [root@maven testweb]# mvn package #打包爲war包 [root@maven testweb]# ls target/ # 會生成一個target目錄 classes maven-archiver testweb testweb.war #將生成的war包移動到Tomcat的網頁根目錄(webapps)下,它將自動解壓, #而後便可訪問Tomcat測試生成的war包 #這裏自行部署Tomcat (可參考:https://blog.51cto.com/14227204/2466232) [root@maven testweb]# mv target/testweb.war /usr/local/tomcat/webapps/ [root@maven testweb]# /usr/local/tomcat/bin/startup.sh [root@maven testweb]# ls /usr/local/tomcat/webapps/ # 能夠看到啓動以後自行解壓 docs examples host-manager manager ROOT testweb testweb.war
客戶端訪問移動到Tomcat網頁根目錄下的war包:
Nexus介紹
Nexus 是Maven倉庫管理器,若是咱們使用Maven,咱們能夠從Maven中央倉庫下載所須要的構件(artifact),但這一般沒有公司這麼幹,通常都是在本地架設一個Maven倉庫服務器,在代理遠程倉庫的同時維護本地倉庫,以節省帶寬和時間,Nexus就能夠知足這樣的須要。此外,它還提供了強大的倉庫管理功能,構件搜索功能,它基於REST,友好的UI是一個extjs的REST客戶端,它佔用較少的內存,基於簡單文件系統而非數據庫。這些優勢使其日趨成爲最流行的Maven倉庫管理器。
Nexus不是Maven的核心概念,它僅僅是一種衍生出來的特殊的Maven倉庫。對於Maven來講,倉庫只有兩種:本地倉庫和遠程倉庫。
本地倉庫就是咱們在maven的setting.xml中配置的本地倉庫地址。因爲最原始的本地倉庫是空的,Maven必須知道至少一個可用的遠程倉庫,才能在執行Maven命令的時候下載到須要的構件。中央倉庫是maven默認的遠程倉庫。
當公司架構存在私服的工做流程以下:
私服是架設在局域網的一種特殊的遠程倉庫,目的是代理遠程倉庫及部署第三方構件。有了私服以後,當 Maven 須要下載構件時,直接請求私服,私服上存在則下載到本地倉庫;不然,私服請求外部的遠程倉庫,將構件下載到私服,再提供給本地倉庫下載。
Nexus的功能以下:
一、節省外網帶寬。大量對於外部倉庫的重複請求會消耗帶寬,利用私服代理外部倉庫,能夠消除對外的重複構件下載,下降帶寬的壓力。
二、加速Maven構建。加速Maven構建。不停地鏈接請求外部倉庫十分的耗時,Maven在執行構建的時候不停地檢查遠程倉庫的數據。利用私服,Maven只檢查局域網的數據,提升構建的速度。
三、部署第三方構件。部署第三方構件。當某個構件沒法從任何一個外部遠程倉庫得到。創建私服以後,即可以將這些構件部署到私服,供內部的Maven項目使用。
四、提升穩定性,加強控制。提升穩定性,加強控制。Maven構建高度依賴於遠程倉庫,所以,當網絡不穩定的時候,Maven構建也會變得不穩定,甚至沒法構建。私服緩存了大量構建,即便暫時沒有外網,Maven也能夠正常的運行。
五、下降中央倉庫的負荷。下降中央倉庫的負荷。使用私服能夠避免不少對中央倉庫的重複下載,下降中央倉庫的壓力。
一、開始部署Nexus
[root@maven ~]# mkdir /usr/local/nexus [root@maven ~]# tar zxf nexus-3.17.0-01-unix.tar.gz -C /usr/local/nexus/ #啓動nexus必須使用nexus用戶,不可使用權限太高的用戶,好比root,不然會啓動失敗 [root@maven ~]# useradd nexus [root@maven ~]# chown -R nexus:nexus /usr/local/nexus/ [root@maven ~]# ls /usr/local/nexus/ nexus-3.17.0-01 # 這是應用目錄 sonatype-work # 這是工做目錄,存放鏡像倉庫 #運行內存和工做目錄nexus-3.17.0-01/bin/nexus.vmoptions (修改對應字段便可) #運行監聽地址和端口nexus-3.17.0-01/etc/nexus-default.properties [root@maven ~]# ln -s /usr/local/nexus/nexus-3.17.0-01/bin/nexus /usr/local/bin/ #建立命令軟鏈接 #切換至nexus用戶,並啓動nexus服務,若是使用root用戶,會由於權限太高而啓動失敗 [root@maven ~]# su nexus [nexus@maven root]$ nexus start Starting nexus [root@maven ~]# netstat -anput | grep 8081 tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 4687/java
啓動nexus後,便可訪問服務器IP+8081端口:
根據下述提示的路徑,查看密碼:
[root@maven ~]# cat /usr/local/nexus/sonatype-work/nexus3/admin.password 5af5b7df-3f84-4987-a1fe-0b9c0933d3ad
進行登陸,默認的用戶名爲admin,密碼就是咱們上面查看到的:
更改admin的密碼:
建立角色
點擊建立:
建立用戶
查看默認倉庫類型
倉庫類型介紹:
- group(倉庫組類型):又叫組倉庫,用於方便開發人員,本身設定的倉庫
- hosted(宿主類型):內部項目的發佈倉庫(內部開發人員發佈上去存放的倉庫)
- proxy(代理類型):從遠程中央倉庫中尋找數據的倉庫(能夠點擊對應的倉庫的Configuration頁簽下Remote Storage Location屬性的值,即被代理的遠程倉庫的路徑)
- virtual(虛擬類型):虛擬倉庫(這個基本上用不到)
- Public Repositories下的倉庫類型
- 3rd party: 沒法從公共倉庫得到的第三方發佈版本的構件倉庫,即第三方依賴的倉庫,這個數據一般是由內部人員自行下載以後發佈上去;
- Apache Snapshots: 用了代理ApacheMaven倉庫快照版本的構件倉庫
- Central: 用來代理maven中央倉庫中發佈版本構件的倉庫
- entral M1 shadow: 用於提供中央倉庫中M1格式的發佈版本的構件鏡像倉庫
- Codehaus Snapshots: 用來代理CodehausMaven 倉庫的快照版本構件的倉庫
- Releases: 內部的模塊中release模塊的發佈倉庫,用來部署管理內部的發佈版本構件的宿主類型倉庫;release是發佈版本;
- Snapshots:發佈內部的SNAPSHOT模塊的倉庫,用來部署管理內部的快照版本構件的宿主類型倉庫;snapshots是快照版本,也就是不穩定版本
開啓release的重複發版權限
開發中須要重複發版,則須要開啓release類型倉庫的對應權限設置allow redeploy。以下:
設置代理倉庫(阿里雲maven倉庫)
阿里雲倉庫的URL:https://maven.aliyun.com/nexus/content/groups/public/
填寫上述兩個內容後,點擊頁面下邊的create repository 建立完成以後能夠看到新增長了阿里雲庫。
將添加的阿里雲Proxy加入默認group中:
保存後,再次刷新頁面,便可看到當前的Nexus地址:
關於上述配置的常見使用場景介紹以下:
- release發版倉庫(nexus默認已創建:maven-releasees)
- snapshot 測試中心快照倉庫(nexus默認已創建:maven-snapshots)
- central 中央倉庫 (nexus默認已創建:maven-central)
- 關於組:在nexus中能夠創建組,將不一樣類型倉庫集合在一塊兒(nexus默認已創建:maven-public)
- 場景一: 自定義新建proxy類型倉庫,在maven配置中分別配置不一樣調用地址,或是將自定義新建的proxy倉庫統一加入一個組,在maven配置中調用一個地址
- 場景二: 使用maven已經創建好的proxy倉庫,且使用已創建好的組(maven-public)配置maven調用地址
- 場景一和場景二本質上講沒有什麼變化,根據公司開發習慣和需求進行配置便可
[root@maven conf]# pwd /usr/local/maven/conf [root@maven conf]# vim settings.xml ................... <mirror> <id>nexus-testconf</id> <mirrorOf>*</mirrorOf> <name>nexus testconf</name> <url>http://192.168.171.134:8081/repository/maven-public/</url> </mirror> #上面的URL就是在nexus上查看到的URL </mirrors> ..........................#省略部份內容 #跳轉至260行左右,寫如下內容 <profile> <id>testconf</id> <repositories> <repository> <id>nexus</id> <url>http://192.168.171.134:8081/repository/maven-public/</url> <releases> <enable>true</enable> </releases> <snapshots> <enable>true</enable> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <url>http://192.168.171.134:8081/repository/maven-public/</url> <releases> <enable>true</enable> </releases> <snapshots> <enable>true</enable> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> #在這行上面添加以上內容,這行大概是在260行左右 <activeProfiles> <activeProfile>testconf</activeProfile> </activeProfiles> </settings> #將 <activeProfiles>字段寫在settings字段上面
一、建立一個maven項目進行測試
[root@maven conf]# rm -rf ~/.m2/ #先刪除本地倉庫的緩存 [root@maven testdir]# mvn archetype:generate -DgroupId=cn.zyz.zyzweb -DartifactId=zyzweb -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false #構建項目,能夠看到在構建的過程當中使用的是nexus私服地址。 [root@maven testdir]# ls zyzweb/ pom.xml src [root@maven testdir]# cd zyzweb/ [root@maven zyzweb]# mvn package #將項目打包 [root@maven zyzweb]# ls #打包後,會生成target目錄 pom.xml src target
查看nexus中緩存的文件(若沒有緩存文件,下面有解決辦法)
若是在以上頁面中,並無看到緩存的文件,是由於當前沒有寫入nexus的權限,能夠進行如下操做:
進行以上設置後,再次刪除本地宿主目錄下的緩存文件,從新構建項目並打包,便可看到nexus上的緩存文件了。
二、配置認證,將打包好的項目上傳到nexus中
[root@maven ~]# vim /usr/local/maven/conf/settings.xml #搜索「server」字段 <server> <id>deploymentRepo</id> <username>repouser</username> <password>repopwd</password> </server> --> #定位到該行,寫入如下內容 <server> <id>test-nexus</id> <username>testdev</username> <password>123.com</password> </server>
修改項目的pod.xml文件:
[root@maven zyzweb]# pwd /tmp/testdir/zyzweb [root@maven zyzweb]# ls pom.xml src [root@maven zyzweb]# vim pom.xml #編輯配置文件 .....................#省略部份內容,如下內容是手動添加的 <distributionManagement> <snapshotRepository> <id>test-nexus</id> #這裏的ID必須和上面settings文件中配置認證的ID一致 <name>Nexus Snapshot</name> <url>http://192.168.171.134:8081/repository/maven-snapshots/</url> #上面是修訂版本的URL,可在nexus的web界面查看 </snapshotRepository> <repository> <id>test-nexus</id> <name>Nexus releases</name> <url>http://192.168.171.134:8081/repository/maven-releases/</url> #上面是發行版本的URL,一樣在web界面的Repositories中能夠查看到 </repository> </distributionManagement> </project> #在最後一行上面添加以上內容 [root@maven zyzweb]# mvn deploy # 上傳到私服
在web界面確認上傳成功:
將全部的內容展開,便可看到如下內容:
若是在部署過程當中,出現了錯誤,首先先檢查一下配置文件setting.xml的帳號密碼有沒有與nexus建立的用戶密碼相同,其次再檢查setting.xml裏的id標籤和pom.xml文件中的id標籤是否相同,不一樣會報401(沒有權限)的錯誤。
三、上傳到maven-release倉庫
[root@maven zyzweb]# pwd /tmp/testdir/zyzweb [root@maven zyzweb]# vim pom.xml <version>1.0-SNAPSHOT</version> #將上面這行的「SNAPSHOT」去掉,更改後以下: <version>1.0</version> #更改後保存退出便可 [root@maven zyzweb]# mvn deploy
在web界面中查看,以下:
展開全部節點,便可看到如下內容:
配置以下(定義名稱並激活),而後自行拖到頁面的最下方,點擊添加便可
Maven添加第三方倉庫地址(全局配置)
#編輯主配置文件 [root@maven zyzweb]# vim /usr/local/maven/conf/settings.xml #在以前的profiles中,填寫如下內容 <repository> <id>3rdnexus</id> <url>http://192.168.171.134:8081/repository/3rd/</url> <release> <enable>true</enable> </release> <snapshots> <enable>true</enable> </snapshots> </repository> </profiles> #添加到這個Profiles標籤上面 #在以前的認證字段,再添加一個認證 <server> <id>test-nexus</id> <username>testdev</username> <password>123.com</password> </server> <server> <id>3rdnexus</id> #此ID要與profile中的ID對應 <username>testdev</username> <password>123.com</password> </server> [root@maven testdir]# ls # 上傳這個jar包 aliyun-sdk-oss-2.6.1.jar [root@maven testdir]# mvn deploy:deploy-file -DgroupId=com.aliyun.oss -DartifactId=aliyun-sdk-oss -Dversion=2.6.1 -Dpackaging=jar -Dfile=/tmp/testdir/aliyun-sdk-oss-2.6.1.jar -Durl=http://192.168.171.134:8081/repository/3rd/ -DrepositoryId=3rdnexus
查看本地上傳的jar包: