摘要:本文主要介紹在CentOS7.1下使用nexus3.6.0搭建maven私服,以及maven私服的使用(將自己的Maven項目指定到私服地址、將第三方項目jar上傳到私服供其他項目組使用)
一、簡介
Maven是一個采用純Java編寫的開源項目管理工具, Maven采用了一種被稱之為Project Object Model(POM)概念來管理項目,所有的項目配置信息都被定義在一個叫做POM.xml的文件中, 通過該文件Maven可以管理項目的整個生命周期,包括清除、編譯,測試,報告、打包、部署等等。目前Apache下絕大多數項目都已經采用Maven進行管理. 而Maven本身還支持多種插件, 可以方便更靈活的控制項目, 開發人員的主要任務應該是關注商業邏輯並去實現它, 而不是把時間浪費在學習如何在不同的環境中去依賴jar包,項目部署等。
maven和ant都是軟件構建工具(軟件管理工具),maven比ant更加強大,已經取代了ant,jar包的聲明式依賴描述。maven有jar包的倉庫。svn是一個軟件的版本控制工具,是一個協同開發工具。svn的倉庫存放的是項目的源碼,歷史版本的備份,聲明每次版本的修改情況。
二、私服應用場景
有些公司都不提供外網給項目組人員,因此就不能使用maven訪問遠程的倉庫地址,所以很有必要在局域網里找一台有外網權限的機器,搭建nexus私服,然后開發人員連到這台私服上,這樣的話就可以通過這台搭建了nexus私服的電腦訪問maven的遠程倉庫。
如果某個IP地址惡意的下載中央倉庫內容,例如全公司100台機器使用同一個IP反復下載,這個IP(甚至是IP段)會進入黑名單,因此稍有規模的使用Maven時,應該用Nexus架設私服。總歸主要是兩點:
1、自己maven私服更容易維護,公司開發從maven私服遷出jar到本地倉庫更快
2、有些公司未開放外網給開發人員
三、部署Nexus
3.1 部署環境
3.2 配置Maven
下載解壓
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz tar -zxvf apache-maven-3.5.2-bin.tar.gz mv apache-maven-3.5.2 /usr/local/maven3.5
配置環境變量
vim /etc/profile
在最末尾加上
#maven MAVEN_HOME=/usr/local/maven3.5 export MAVEN_HOME export PATH=${PATH}:${MAVEN_HOME}/bin
然后再使用下面命令使配置生效
source /etc/profile
查看是否生效
3.3 部署Nexus3.6.0
下載解壓
tar -zxvf apache-maven-3.5.2-bin.tar.gz mv nexus-3.6.0-02 /usr/local/ cd /usr/local/nexus-3.6.0-0.2/bin
啟動
./nexus start
查看日志
到這一步,我們的nexus就算配置成功了,圖中這並不影響使用nexus
四、上傳本地jar包到maven私服
現在我們來介紹怎么把本地的maven項目jar包提交到maven私服上,供其他開發人員使用
4.1 創建一個maven倉庫
首先點擊Security>Users 創建一個用戶,我這里測試創建的用戶/密碼是:deployment/deployment,因為后面提交本地項目jar到私服倉庫會用到
然后點擊,設置>Repository>Repositories>Create repository>maven2(hosted)創建maven項目,注意Deployment policy一定要設置成allow redeploy
上面提到了我們要創建一個maven2(hosted)項目,那這里為什么是創建maven2(hosted)項目,不是創建其他的項目呢,接下來我們進行介紹respository
4.2 respository介紹
proxy:是遠程倉庫的代理。比如說在nexus中配置了一個central repository的proxy,當用戶向這個proxy請求一個artifact,這個proxy就會先在本地查找,如果找不到的話,就會從遠程倉庫下載,然后返回給用戶,相當於起到一個中轉的作用;
Hosted:是宿主倉庫,用戶可以把自己的一些構件,deploy到hosted中,也可以手工上傳構件到hosted里。比如說oracle的驅動程序,ojdbc6.jar,在central repository是獲取不到的,就需要手工上傳到hosted里;
Group:是倉庫組,在maven里沒有這個概念,是nexus特有的。目的是將上述多個倉庫聚合,對用戶暴露統一的地址,這樣用戶就不需要在pom中配置多個地址,只要統一配置group的地址就可以了右邊那個Repository Path可以點擊進去,看到倉庫中artifact列表。不過要注意瀏覽器緩存。
4.3 使用eclipse批量提交jar到maven私服
首先設本地maven的settings.xml配置問價,在servers標簽里添加用戶密碼支持
<server> <id>jeecg</id> <username>deployment</username> <password>deployment</password> </server>
然后再項目的pom.xml添加遠程發布的私服倉庫地址
<distributionManagement> <repository> <id>jeecg</id> <name>jeecg Repository</name> <url>http://172.16.4.166:8081/repository/jeecg/</url> </repository> </distributionManagement>
最后利用eclipse進行上傳,步驟如下圖
我們在console打印成功並在Nexus 私服上可以查看得到上傳成功,如下圖:
在nexus管理頁面查看剛剛上傳的jar包信息
至此,我們的項目jar包提交到私服完成
五、指定maven地址下載jar包到本地
上面的我們提交了jar包到maven私服,現在遷出jar包時填寫那個maven私服地址,看是否能遷出jar包
首先,將項目pom.xml文件的repositories標簽里添加上
<repository> <id>jeecg</id> <name>jeecg Repository</name> <url>http://maven.jeecg.org/nexus/content/repositories/jeecg</url> <snapshots> <enabled>false</enabled> </repository>
然后再maven的settings.xml文件中配置本地倉庫地址
<localRepository>D:\mave_responsity</localRepository>
之后我們就可以遷出這些war包到我們配置的本地倉庫了
至此,大功告成!!!