1、Nexus介紹
Nexus是一個強大的Maven倉庫管理器,它極大地簡化了自己內部倉庫的維護和外部倉庫的訪問。利用Nexus你可以只在一個地方就能夠完全控制訪問 和部署在你所維護倉庫中的每個Artifact。Nexus是一套“開箱即用”的系統不需要數據庫,它使用文件系統加Lucene來組織數據。Nexus 使用ExtJS來開發界面,利用Restlet來提供完整的REST APIs,通過m2eclipse與Eclipse集成使用。Nexus支持WebDAV與LDAP安全身份認證。
2、安裝部署
2.1 下載地址
http://www.sonatype.com/download-oss-sonatype
2.2 安裝
1、 解壓安裝包
tar –zxvf nexus-3.0.0-03-unix.tar.gz
2、 修改Jdk路徑
Nexus3.0.0的版本需要JDK1.8的版本
a)、cd /data/nexus-3.0.0-03/bin
b)、vi nexus
c)、添加JDK配置
INSTALL4J_JAVA_HOME_OVERRIDE=/data/jdk1.8.0_91
3、 修改使用的用戶
a)、vi nexus.rc
b)、添加配置
run_as_user=root
4、 啓動nexus服務
./ nexus
2.3 成功驗證
訪問http://XXX:8081,看是否能跳轉到Nexus頁面
---------------------------------------------------------------------------------------------------------------
因爲Nexus3.0.0與Nexus2.X系列的差別很大,所以本章節我大概講解下Nexus3.0.0的功能使用。
1、功能介紹
1.1 Browse Server Content
1.1.1 Search
這個就是類似Maven倉庫上的搜索功能,就是從私服上查找是否有哪些包。
注意:
1、在Search這級是支持模糊搜索的,如圖所示:
2、如果進入具體的目錄,好像不支持模糊搜索,如圖所示:
1.1.2 Browse
1.1.1.1 Assets
這是能看到所有的資源,包含Jar,已經對Jar的一些描述信息。
1.1.1.1 Components
這裏只能看到Jar包。
2.1 Server Adminstration And configuration
看到這選項是要進行登錄的,在右上角點擊“Sign In”的登錄按鈕,輸入admin/admin123,登錄成功之後,即可看到此功能,如圖所示:
2.1.1 Repository
2.1.1.1 Blob Stores
文件存儲的地方,創建一個目錄的話,對應文件系統的一個目錄,如圖所示:
2.1.1.1 Repositories
2.1.1.1.1Proxy
這裏就是代理的意思,代理中央Maven倉庫,當PC訪問中央庫的時候,先通過Proxy下載到Nexus倉庫,然後再從Nexus倉庫下載到PC本地。
這樣的優勢只要其中一個人從中央庫下來了,以後大家都是從Nexus私服上進行下來,私服一般部署在內網,這樣大大節約的寬帶。
創建Proxy的具體步驟
1、 點擊“Create Repositories”按鈕
2、 選擇要創建的類型
3、 填寫詳細信息
Name:就是爲代理起個名字
Remote Storage: 代理的地址,Maven的地址爲: https://repo1.maven.org/maven2/
Blob Store: 選擇代理下載包的存放路徑
2.1.1.1.2Hosted
Hosted是宿主機的意思,就是怎麼把第三方的Jar放到私服上。
Hosted有三種方式,Releases、SNAPSHOT、Mixed
Releases: 一般是已經發布的Jar包
Snapshot: 未發佈的版本
Mixed:混合的
Hosted的創建和Proxy是一致的,具體步驟可參考2.1.1.1.1
注意事項:
Deployment Pollcy: 我們需要把策略改成“Allow redeploy”。
2.1.1.1.3Group
能把兩個倉庫合成一個倉庫來使用,目前沒使用過,所以沒做詳細的研究。
2.1.2 Security
這裏主要是用戶、角色、權限的配置
2.1.3 Support
包含日誌及數據分析。
2.1.4 System
主要是郵件服務器,調度的設置地方
---------------------------------------------------------------------------------------------------------------
這章主要講怎麼和Maven做集成,集成的方式主要分以下種情況:代理中央倉庫、Snapshot包的管理、Release包的管理、第三方Jar上傳到Nexus上
1 代理中央倉庫
只要在PMO文件中配置私服的地址即可,配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <repositories> <repository> <id>maven-central</id> <name>maven-central</name> <url>http: //10.0.1.42:8081/repository/maven-central/</url> <snapshots> <enabled> true </enabled> </snapshots> <releases> <enabled> true </enabled> </releases> </repository> </repositories> |
2 Snapshot包的管理
1、 修改Maven的settings.xml文件,加入認證機制
1 2 3 4 5 6 | <servers> <server> <id>nexus</id> <username>admin</username> <password>admin123</password> </server> |
2、 修改工程的Pom文件
1 2 3 4 5 6 7 8 9 10 11 12 | <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: //10.0.1.42:8081/repository/maven-snapshots/</url> </site> </distributionManagement> |
注意事項:
截圖中的名字要跟apache-maven-3.0.5-nexus\conf\settings.xml的名字一定要對應上。
3、 上傳到Nexus上
a)、項目編譯成的jar是Snapshot(POM文件的頭部)
1 2 3 4 | <groupId>com.woasis</groupId> <artifactId>test-nexus</artifactId> <version>1.0.0-SHAPSHOT</version> <packaging>jar</packaging> |
b)、使用mvn deploy 即可,運行結果如圖所示:
c、因爲Snapshot是快照版本,默認他每次會把Jar加一個時間戳,做爲歷史備份版本。
3 Releases包的管理
a)、與Snapshot大同小異,只是上傳到私服上的Jar包不會自動帶時間戳,如圖所示:
b)、與Snapshot配置不同的地方,就是工程的PMO文件,加入repository配置
1 2 3 4 5 6 | <distributionManagement> <repository> <id>nexus</id> <name>Nexus Snapshot</name> <url>http: //10.0.1.42:8081/repository/maven-releases/</url> </repository> |
c)、打包的時候需要把Snapshot去掉,如圖所示:
1 2 3 4 | <groupId>com.woasis</groupId> <artifactId>test-nexus</artifactId> <version>1.0.0</version> <packaging>jar</packaging> |
4 第三方Jar上傳到Nexus
1 | 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的認證配的名字。