1. 程式人生 > >搭建Maven私服那點事

搭建Maven私服那點事

文件的 repos 版本控制工具 oracl 手工 apach security 項目 源碼

摘要:本文主要介紹在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包到我們配置的本地倉庫了

技術分享

 至此,大功告成!!!

  

 

搭建Maven私服那點事