搭建Maven私服
摘要:本文主要介紹在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
下載解壓
1 2 3 | 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 |
配置環境變量
1 | vim /etc/profile |
在最末尾加上
1 2 3 4 | #maven MAVEN_HOME= /usr/local/maven3 .5 export MAVEN_HOME export PATH=${PATH}:${MAVEN_HOME} /bin |
然後再使用下面命令使配置生效
1 | source /etc/profile |
查看是否生效
3.3 部署Nexus3.6.0
下載解壓
1 2 3 | 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 |
啓動
1 | . /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標籤裏添加用戶密碼支持
1 2 3 4 5 | <server> < id >jeecg< /id > <username>deployment< /username > <password>deployment< /password > < /server > |
然後再項目的pom.xml添加遠程發佈的私服倉庫地址
1 2 3 4 5 6 7 | <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標籤裏添加上
1 2 3 4 5 6 7 | <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文件中配置本地倉庫地址
1 | <localRepository>D:\mave_responsity< /localRepository > |
之後我們就可以遷出這些war包到我們配置的本地倉庫了
轉自: https://www.cnblogs.com/zishengY/p/7794923.html