Sonatype Nexus高级配置
Sonatype Nexus的安裝配置參見:CentOS系統(tǒng)中安裝Nexus并導(dǎo)入已有的構(gòu)件庫。Nexus內(nèi)置了Jetty容器,${NEXUS_HOME}/bin/jsw目錄下包含了各個操作系統(tǒng)的啟動腳本。當然,如果你不喜歡內(nèi)置的Jetty容器,也可以下載Nexus的war包,部署在tomcat等容器中。
安裝部署后,比較重要的是能夠?qū)ζ溥M行深入的管理和配置,本文將介紹一些關(guān)于Sonatype Nexus的高級配置技巧,方便您進行配置管理。
1、使用Maven上傳組件注意事項
- host類型的倉庫才允許上傳組件
- 倉庫需要開啟允許上傳功能,配置選項中的Deployment Policy選擇“Allow Redeploy”,見下圖
- Nexus用戶必須具有“Artifact Upload”的權(quán)限,Nexus內(nèi)置了一些角色,比如“Nexus Deployment Role”,就可以上傳組件
- Maven主配置文件中需要配置用戶信息及上傳的倉庫信息,配置示例如下:
- <server><id>thirdparty</id><username>deployment</username><password>password</password> </server>
2、修改監(jiān)聽端口
默認情況下,Nexus監(jiān)聽端口8081??梢酝ㄟ^以下方法更改這個端口。
- 停止Nexus
- 編輯${NEXUS_HOME}/conf/plexus.properties文件,修改applicationPort的值
- 重啟Nexus。
3、使Nexus支持其它格式的包
Nexus默認支持jar、war、pom、ejb、ear、rar、par等類型的包,如果希望能添加一些其它類型的包,可以配置如下:
在${nexus-work}/conf/packaging2extension-mapping.properties配置文件中增加配置:
| my-custom-packaging=myextension |
如果該配置文件不存在則手動創(chuàng)建該文件。
4、更新倉庫索引
1)強制更新索引
nexus索引經(jīng)常會出現(xiàn)與遠程倉庫索引不一致的情況,導(dǎo)致某些包不能正常下載,可以強制更新倉庫索引,保持索引同步:
- 以管理員身份登錄
- 右鍵點擊倉庫,選擇Expire Cache
- 右鍵點擊倉庫,選擇Update Index
2)定時更新索引
- 以管理員身份登錄
- 左側(cè)導(dǎo)航欄選擇Administration->Scheduled Tasks
- 點擊add添加一個計劃任務(wù)
- 任務(wù)類型選擇:Update Repositories Index,Repository/Group選擇要更新的倉庫,Recurrence選擇計劃任務(wù)的周期類型
5、調(diào)試組件下載過程
如果Nexus本地索引中包含組件,但是卻不能下載,可能的原因如下:
- 包含組件的組件庫不在group類型的組件庫中
- 路由規(guī)則封鎖了組件的下載
Nexus提供了可以調(diào)試組件下載過程的方法,在組件的下載全路徑后面增加參數(shù)“?describe”,示例如下:
http://192.168.120.202:8081/nexus/content/groups/public/org/codehaus/mojo/mojo-parent/30/mojo-parent-30.pom?describe
http://localhost:8081/nexus/content/groups/public/foo/bar/1.0/bar-1.0.jar?describe
Nexus將會以json的形式返回調(diào)試的輸出結(jié)果,結(jié)果主要包括:
- 組件的地址
- 組件是否可以找到以及原因
- 如果能找到組件,統(tǒng)計查找組件的過程
示例返回結(jié)果如下:
{"data":{"requestUrl":"http://localhost:8081/nexus/content/groups/public/test/project/1.0/project-1.0.jar?describe","processingTimeMillis":471,"request":{"requestUrl":"http://localhost:8081/nexus/content/groups/public/test/project/1.0/project-1.0.jar?describe","requestPath":"/test/project/1.0/project-1.0.jar","requestContext":["request.received.timestamp=1276286536595","request.address=0:0:0:0:0:0:0:1%0","request.remoteOnly=false","request.url=http://localhost:8081/nexus/content/groups/public/test/project/1.0/project-1.0.jar?describe","request.localOnly=false","request.appRootUrl=http://localhost:8081/nexus"]},"response":{"responseType":"NOT_FOUND","processedRepositoriesList":["public","snapshots","thirdparty","central","java.net-m2","java.net-m1-m2","google","apache-snapshots","codehaus-snapshots"],"appliedMappings":["public repository applied [11b647d6117038d8=[type=EXCLUSION, groupId=public, patterns=[.*/project/.*], mappedRepositories=[releases]]]"]}}}注意查看其中的response節(jié)點,如上例中的"responseType":"NOT_FOUND"表示未找到組件,通過該方法可以詳細排查組件不能下載的原因。
再提供一個pom類型的包“mojo-parent-30.pom”的調(diào)試示例
{"data": {"requestUrl": "http://192.168.120.202:8081/nexus/content/groups/public/org/codehaus/mojo/mojo-parent/30/mojo-parent-30.pom?describe", "processingTimeMillis": 1322, "request": {"requestUrl": "http://192.168.120.202:8081/nexus/content/groups/public/org/codehaus/mojo/mojo-parent/30/mojo-parent-30.pom?describe", "requestPath": "/org/codehaus/mojo/mojo-parent/30/mojo-parent-30.pom", "requestContext": ["request.remoteOnly=false", "request.localOnly=true"]}, "response": {"responseType": "FILE", "responseActualClass": "org.sonatype.nexus.proxy.item.DefaultStorageFileItem", "responsePath": "/groups/public/org/codehaus/mojo/mojo-parent/30/mojo-parent-30.pom", "responseUid": "central:/org/codehaus/mojo/mojo-parent/30/mojo-parent-30.pom", "originatingRepositoryId": "central", "originatingRepositoryName": "Central", "originatingRepositoryMainFacet": "org.sonatype.nexus.proxy.maven.MavenProxyRepository", "processedRepositoriesList": [ ], "properties": ["created=1333560570000", "modified=1333560570000", "lastRequested=1375255131976", "remoteChecked=1375255131556", "remoteUrl=http://repo1.maven.org/maven2/org/codehaus/mojo/mojo-parent/30/mojo-parent-30.pom", "storedLocally=1375255131556", "isExpired=false", "readable=true", "writable=true", "virtual=false"], "attributes": ["digest.md5=61a1f7765d45a51a6a7bb03bf410588f", "digest.sha1=be742febdaa3cc7a971dacdf8cdc7ebd94b5765b", "remote.sha1=be742febdaa3cc7a971dacdf8cdc7ebd94b5765b", "request.address=192.168.120.121", "request.user=anonymous", "storageItem-checkedRemotely=1375255131556", "storageItem-created=1333560570000", "storageItem-expired=false", "storageItem-generation=2", "storageItem-lastRequested=1375255131976", "storageItem-length=26627", "storageItem-modified=1333560570000", "storageItem-path=/groups/public/org/codehaus/mojo/mojo-parent/30/mojo-parent-30.pom", "storageItem-readable=true", "storageItem-remoteUrl=http://repo1.maven.org/maven2/org/codehaus/mojo/mojo-parent/30/mojo-parent-30.pom", "storageItem-repositoryId=central", "storageItem-storedLocally=1375255131556", "storageItem-writable=true"]}}} 新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的Sonatype Nexus高级配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业级UML/MDA工具Trufun 2
- 下一篇: 打破传统天价SAP培训,开创SAP师徒之