Maven使用教程二:nexus私服搭建及使用


nexus安裝

nexus官網 下載最新的安裝包

1.打開命令行,切換到nexus-3.2.1-01/bin目錄下,回車。例:C:\Nexus\nexus-3.2.1-01\bin
2.輸入:nexus.exe/run,並回車
3.執行后出現以下信息表示安裝成功:

4.打開瀏覽器,輸入:localhost:8081,完成

可以修改nexus的一些配置,有兩個配置文件,一個是在bin目錄下面的nexus.vmoptions,另外一個是etc目錄下面的nexus-default.properties,里面可以修改端口號(默認是8081)

nexus默認的管理員賬號為:admin/admin123

nexus中的各種倉庫

首先看下這個nexus圖,因為公司安裝的是2.x所以這個界面也是老版的界面截圖:

這里看下type,現在來說下nexus四種倉庫類型:

  • hosted :宿主倉庫,這個倉庫,是用來把公司內部的發布包部署到這個倉庫里面來,然后公司內的其他人就可以從這個宿主倉庫里去下載依賴使用
  • proxy:代理倉庫,這個倉庫不是用來給公司內部的發布部署的,是代理了公司外部的各種倉庫,例如java.net,codehaus,jboss等等,最重要就是它代理了公司外部的中央倉庫,但是這里也可以修改nexus連接為阿里雲鏡像倉庫,阿里雲去連接中央倉庫。
  • group:倉庫組,其實就是將各種宿主倉庫、代理倉庫全部組成一個虛擬的倉庫組,然后我們的項目只要配置依賴一個倉庫組,相當於就是可以自動連接倉庫組對應的各種倉庫。
  • 3rd party:該倉庫是個宿主倉庫,主要用來部署沒法從公共倉庫獲取的第三方依賴包。
  • virtual:虛擬倉庫

最后還有倉庫的狀態和路徑:

  • maven-central:這是maven中央倉庫的代理倉庫
  • maven-releases:該倉庫是個宿主倉庫,用於部署公司內部的release版本的發布包(類似於1.0.0,,release的意思就是你的工程已經經過了完善的測試,單元測試,集成測試,QA測試,上生產環境使用了)到這個倉庫里面,供其他同事在生產環境依賴和使用
  • maven-snapshots:該倉庫是個宿主倉庫,用於部署公司內部的snapshot版本的發布包到這個倉庫里(如果你的某個工程還在開發過程中,測試還沒結束,但是,此時公司里其他同事也在開發一些工程,需要依賴你的包進行開發和測試,聯調,此時你的工程的版本就是類似1.0.0-SNAPSHOT這樣的版本),供其他同事在開發和測試的時候使用
  • 3rd party:該倉庫是個宿主倉庫,主要用來部署沒法從公共倉庫獲取的第三方依賴包,比如說,你的公司依賴於第三方支付廠商的一個依賴包,那個依賴包不是開源的,是商業的包。那么你是沒有辦法從maven中央倉庫獲取的。此時,我們可能會自己手動從支付廠商那里獲取到一個jar包,下載之后上傳到私服里來,就放這個倉庫里,3rd-party倉庫
    -maven-public:倉庫組,上面所有release倉庫都在這個倉庫組內

nexus倉庫架構

將maven-central 代理倉庫修改為阿里雲倉庫:

結合鏡像將公司項目配置為強制從nexus私服下載

我們已經有了私服,下一步就是要將公司中的項目配置為強制從公司內的私服來下載,不允許走外網,這樣就可以統一收口管理。本身nexus私服也是代理了各種中央倉庫,直接用nexus私服就可以了。

通常會在settings.xml配置文件中,為當前機器統一配置使用的私服倉庫地址,而且一般都是直接用私服中的倉庫組,在settings.xml中使用profiles即可

<profiles>
	<profile>
		<id>nexus</id>
      	<repositories>
        		<repository>
          			<id>nexus</id>
          			<name>Nexus</name>
      	  		  <url>http://localhost:8081/nexus/content/groups/public</url>
          			<releases><enabled>true</enabled></releases>
          			<snapshots><enabled>true</enabled></snapshots>
        		</repository>
      	</repositories>
      	<pluginRepositories>
        		<pluginRepository>
          			<id>nexus</id>
          			<name>Nexus Plugin Repository</name>
      			    <url>http://localhost:8081/nexus/content/groups/public</url>
          			<releases><enabled>true</enabled></releases>
          			<snapshots><enabled>true</enabled></snapshots>
        		</pluginRepository>
      	</pluginRepositories>
	</profile>
</profiles>

<activeProfiles>
	<activeProfile>nexus</activeProfile>
</activeProfiles>

nexus權限管理&賬號創建

我們進行團隊項目開發時,常常自己寫的jar包需要被別的團隊依賴,那么如何將我們寫好的代碼,清理/編譯/測試/打包/部署到私服上去呢?

nexus的權限是典型的RBAC模型,role-based access control,每個用戶可以分配多個角色,每個角色分配多個全新啊,每個權限就是一個具體的功能。

  • nexus默認有三個用戶:
  • amdin:管理員賬號,密碼是admin123
    deployment:可以搜索和部署構建,就是普通的開發賬號,密碼是deployment123(在nexus 3.x最新版本已經被消除了)
  • anonymout:如果沒有給認證信息,就是個匿名用戶,可以下載依賴,查看依賴

可以在Users頁面添加用戶,管理用戶,還可以針對用戶的role tree進行角色的分配。

將開發好的模塊部署到nexus上

1.發布倉庫配置

將項目發布包部署到哪個倉庫中,是需要用下面的pom.xml中的配置來設置的

<distributionManagement>
	<repository>
		<id> nexus-releases</id>
		<name> Nexus Release Repository</name>
		<url>http://localhost:8081/nexus/content/repositories/releases/</url>
	</repository>
	<snapshotRepository>
		<id> nexus-snapshots</id>
		<name> Nexus Snapshot Repository</name>
		<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
	</snapshotRepository>
</distributionManagement>

2.部署專用的賬號配置

但是nexus倉庫對於普通的匿名用戶是只讀的,也就是說,只能下載依賴,不能部署發布包,因此如果要能夠部署發布包,還需要在settings.xml文件里通過 元素配置使用專用的部署用戶,來通過認證,進行發布包的部署。

需要在settings中配置:

<servers>
	<server>
		<id>nexus-releases</id>
		<username>deployment</username>
		<password>deployment123</password>
	</server>
	<server>
		<id>nexus-snapshots</id>
		<username>deployment</username>
		<password>deployment123</password>
	</server>
</servers>

3.執行mvn deploy命令部署到私服

執行mvn clean deploy命令,就可以讓maven自動給我們編譯源代碼、運行單元測試、打成jar包、將jar包安裝到本地倉庫、將Jar包部署到配置的遠程私服倉庫里面去

4.mvn命令說明

  • mvn clean package:清理、編譯、測試、打包
  • mvn clean install:清理、編譯、測試、打包、安裝到本地倉庫,比如你自己負責了3個工程的開發,互相之間有依賴,那么如果你開發好其中一個工程,需要在另外一個工程中引用它,此時就需要將開發好的工程jar包安裝到本地倉庫,然后才可以在另外一個工程聲明對它的依賴,此時會直接取用本地倉庫中的jar包
  • mvn clean deploy:清理、編譯、測試、打包、安裝到本地倉庫、部署到遠程私服倉庫,這個其實就是你負責的工程寫好了部分代碼,別人需要依賴你的jar包中提供的接口來寫代碼和測試。此時你需要將snapshot jar包發布到私服的maven-snapshots倉庫中。供別人在本地聲明對你的依賴和使用。

5.對於極其少數的jar包手動上傳
新版本里面,其實主要是建議用命令行手動上傳的方式,就不用界面上上傳的方式了:

<server>
    <id>nexus-3rd-party</id>
    <username>deployment</username>
    <password>deployment123</password>
</server>

執行mvn命令:

men deploy:deploy-file -DgroupId=com.csource -DartifactId=fastdfs-client-java -Dversion=1.24 -Dpackaging=jar -Dfile=F:\DevelopmentKit\fastdfs_client_v1.24.jar -Durl=http://localhost:8081/repository/3rd-party/ -DrepositoryId=nexus-3rd-party

感興趣的小伙伴可關注個人公眾號:壹枝花算不算浪漫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM