Linux平臺搭建nexus私服
Nexus介紹
Nexus是一個強大的Maven倉庫管理器,它極大地簡化了自己內部倉庫的維護和外部倉庫的訪問。利用Nexus你可以只在一個地方就能夠完全控制訪問 和部署在你所維護倉庫中的每個Artifact。Nexus是一套“開箱即用”的系統不需要資料庫,它使用檔案系統加Lucene來組織資料。Nexus 使用ExtJS來開發介面,利用Restlet來提供完整的REST APIs,通過m2eclipse與Eclipse整合使用。Nexus支援WebDAV與LDAP安全身份認證。
Nexus安裝部署
基礎環境
- 安裝jdk1.8
]# mkdir /usr/java ]# tar -xf jdk-8u181-linux-x64.tar.gz -C /usr/java ]# vim /etc/profile export JAVA_HOME=/usr/java/jdk1.8.0_181 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib export PATH=$JAVA_HOME/bin:$JRE_HOME:/bin:$PATH ]# source /etc/profile
- 安裝maven
]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz ]# tar xf apache-maven-3.5.4-bin.tar.gz -C /usr/local/ ]# mv apache-maven-3.5.4 maven-3.5.4 ]# vim /etc/profile export MAVEN_HOME=/usr/local/maven-3.5.4 export PATH=$PATH:$MAVEN_HOME/bin ]# source /etc/profile
- 安裝nexus
]# tar -xf nexus-3.0.0-03-unix.tar.gz -C /usr/local/
]# cd /data/nexus-3.0.0-03/bin
]# vim nexus.rc
run_as_user="root"
]# ./nexus start
- 驗證 訪問http://XXX:8081,看是否能跳轉到Nexus頁面
功能介紹
- Browse Server Content
search功能 這個類似Maven倉庫上的搜尋功能,就是從私服上查詢是否有哪些包。search功能支援模糊搜尋的 如果進入具體的目錄,好像不支援模糊搜尋
Browse Assets 這能看到所有的資源,包含Jar,已經對Jar的一些描述資訊。 Components 這裡只能看到Jar包。
- Server Adminstration And configuration 看到這選項是要進行登入的,在右上角點選“Sign In”的登入按鈕,輸入admin/admin123,登入成功之後,即可看到此功能,如圖所示: Repository Blob Stores 檔案儲存的地方,建立一個目錄的話,對應檔案系統的一個目錄,如圖所示 Repositories Proxy 這裡就是代理的意思,代理中央Maven倉庫,當PC訪問中央庫的時候,先通過Proxy下載到Nexus倉庫,然後再從Nexus倉庫下載到PC本地。 這樣的優勢只要其中一個人從中央庫下來了,以後大家都是從Nexus私服上進行下來,私服一般部署在內網,這樣大大節約的寬頻。 建立Proxy的具體步驟 點選“Create Repositories”按鈕 選擇要建立的型別 填寫詳細資訊 Name:就是為代理起個名字 Remote Storage: 代理的地址,Maven的地址為: https://repo1.maven.org/maven2/ Blob Store: 選擇代理下載包的存放路徑
Hosted Hosted是宿主機的意思,就是怎麼把第三方的Jar放到私服上。 Hosted有三種方式,Releases、SNAPSHOT、Mixed Releases: 一般是已經發布的Jar包 Snapshot: 未釋出的版本 Mixed:混合的 Hosted的建立和Proxy是一致的,具體步驟可參考2.1.1.1.1 注意事項: Deployment Pollcy: 我們需要把策略改成“Allow redeploy”。 Group 能把兩個倉庫合成一個倉庫來使用,目前沒使用過,所以沒做詳細的研究。 Security 這裡主要是使用者、角色、許可權的配置 Support 包含日誌及資料分析。 System 主要是郵件伺服器,排程的設定地方
###這Maven整合 這章主要講怎麼和Maven做整合,整合的方式主要分以下種情況:代理中央倉庫、Snapshot包的管理、Release包的管理、第三方Jar上傳到Nexus上 代理中央倉庫 只要在PMO檔案中配置私服的地址即可,配置如下:
<repositories>
<repository>
<id>maven-central</id>
<name>maven-central</name>
<url>http://192.168.0.202:8081/repository/maven-central/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
Snapshot包的管理 修改Maven的settings.xml檔案,加入認證機制
<servers>
<server>
<id>nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
修改工程的Pom檔案
<distributionManagement>
<snapshotRepository>
<id>nexus</id>
<name>Nexus Snapshot</name>
<url>http://10.0.1.42:8081/repository/maven-snapshots/</url>
</snapshotRepository>
<site>
<id>nexus</id>
<name>Nexus Sites</name>
<url>dav:http://192.168.0.202:8081/repository/maven-snapshots/</url>
</site>
</distributionManagement>
注意事項: 截圖中的名字要跟apache-maven-3.0.5-nexus\conf\settings.xml的名字一定要對應上。
- 上傳到Nexus上 專案編譯成的jar是Snapshot(POM檔案的頭部)
<groupId>com.woasis</groupId>
<artifactId>test-nexus</artifactId>
<version>1.0.0-SHAPSHOT</version>
<packaging>jar</packaging>
使用mvn deploy 即可,執行結果如圖所示:
因為Snapshot是快照版本,預設他每次會把Jar加一個時間戳,做為歷史備份版本。
Releases包的管理 與Snapshot大同小異,只是上傳到私服上的Jar包不會自動帶時間戳,如圖所示: 與Snapshot配置不同的地方,就是工程的PMO檔案,加入repository配置
<distributionManagement>
<repository>
<id>nexus</id>
<name>Nexus Snapshot</name>
<url>http://10.0.1.42:8081/repository/maven-releases/</url>
</repository>
打包的時候需要把Snapshot去掉,如圖所示:
<groupId>com.woasis</groupId>
<artifactId>test-nexus</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
第三方Jar上傳到Nexus
mvn deploy:deploy-file -DgroupId=org.jasig.cas.client -DartifactId=cas-client-core -Dversion=3.1.3 -Dpackaging=jar -DrepositoryId=nexus -Dfile=D:\cas-client-core-3.1.3.jar -Durl=http://10.0.1.42:8081/repository/maven-releases/-DgeneratePom=false
注意事項: -DrepositoryId=nexus 對應的就是Maven中settings.xml的認證配的名字