1. 程式人生 > >liunx(centos7)搭建maven私服(nexus3)

liunx(centos7)搭建maven私服(nexus3)

一、相關網站:

二、相關知識:

      1、倉庫可以歸分為3種,本地maven倉庫、私服、遠端倉庫(包含中央倉庫或者別的遠端倉庫,私服其實也算)

      2、依賴的座標與路徑大致對應,如log4j/log4j/1.2.25/log4j-1.2.25.jar為groupId/artifactId/version/artifiactId-version.packaging

      3、本地匯入maven依賴後大致是先從自己的本地倉庫找相關依賴,本地沒有找私服,私服沒有找遠端倉庫;如果本地匯入子工程依賴父工程,2個工程中都匯入了相關依賴,優先使用本工程的(就近原則)

三、搭建私服的優點:

           1、節省寬頻,一個人下載所有人都可以用

           2、加速構建

           3、可以部署第三方構件

           4、可建立內部倉庫,供特定人員使用

四、搭建nexus3私服:

           1、搭建nexus需要有java環境,且nexus3必須java8以上環境

           2、下載壓縮包,解壓到自定義目錄

tar -zxvf nexus-3.13.0-01-unix.tar.gz

            3、cd 到相應目錄的bin目錄下啟動nexus

./nexus start

start:在後臺啟動服務,不在介面上列印任何啟動或者執行時資訊。
run:啟動服務,但是在介面上打印出啟動資訊以及執行時資訊以及日誌資訊。
stop:關閉服務
status:檢視nexus執行狀態
restart:重啟服務
force-reload:強制過載一遍配置檔案,然後重啟服務

        此時如果報端口占用,先檢視8081埠是否佔用,如果佔用則進入到nexus目錄下的etc目錄

vi nexus-default.properties 

            更改埠為自己指定埠即可

           4、此時訪問伺服器加埠號即可,如果啟動正常,訪問不了頁面,檢視防火牆是否正常關閉,預設使用者名稱和密碼為admin/admin123

五、配置nexus:

          1、建立一個使用者:

           2、點選 Repository建立

           關於倉庫型別,還有快照版本,按照正規一個倉庫需要有快照版和釋出版,但是我們自己專案用可以只建立一個釋出版

Nexus的主要的倉庫型別:

    hosted(宿主):宿主倉庫主要用於存放專案部署的構件、或者第三方構件用於提供下載
    proxy(代理):代理倉庫就是對遠端倉庫的一種代理,從遠端倉庫下載構件和外掛然後快取在Nexus倉庫中
    group(倉庫組):對我們已經配置完的倉庫的一種組合策略


Nexus內建倉庫:
    maven-central:代理中央倉庫、策略為Release、只會下載和快取中央倉庫中的釋出版本構件

    maven-releases:策略為Release的宿主倉庫、用來部署組織內部的釋出版本內容。(這是釋出版和下邊的快照版,規定都是一個倉庫配置2種倉庫,但是我們實際開發中其實只有釋出版倉庫就可以了)

    maven-snapshots:策略為Snapshot的宿主倉庫、用來部署組織內部的快照版本內容

    nuget-hosted:用來部署nuget構件的宿主倉庫

    nuget.org-proxy:代理nuget遠端倉庫,下載和緩衝nuget構件

    nuget-group:該倉庫組將nuget-hosted與nuget.org-proxy倉庫聚合並通過一致的地址提供服務

    maven-public:該倉庫組將maven-central,maven-releases與maven-snapshots倉庫聚合並通過一致的地址提供服務;該倉庫將上述所有策略為Release的倉庫聚合並通過一致的地址提供服務

         3、把剛新建的倉庫加入到倉庫組中(放到組中原因是我們在客戶端只需要配置相應組即可,以後有新的倉庫都加到組裡即可,不用客戶端加入多個倉庫)

       到此我們的nexus就算配置完成,剩下配置客戶端和開機自啟;其實搭建很容易,就是一個內嵌容器的java專案啟動即可

六、設定開機自啟:

       在/usr/lib/systemd/system目錄下新建檔案nexus.service,把以下內容拷貝進去改成自己的啟動路徑即可

[Unit]
Description=nexus service
After=network.target

[Service]
Type=forking
ExecStart=/home/service/nexus/nexus-3.13.0-01/bin/nexus start  #自己的啟動目錄
ExecStop=/home/service/nexus/nexus-3.13.0-01/bin/nexus stop    #自己的啟動目錄
User=nexus
Restart=on-abort

[Install]
WantedBy=multi-user.target

      接著執行

sudo systemctl daemon-reload            #重新整理配置
sudo systemctl enable nexus.service     #開啟開機自啟
sudo systemctl start nexus.service      #啟動,這步如果啟用可以不執行
sudo systemctl is-enabled nexus.service #檢視nexus是否為開機自啟

七、配置客戶端:

         1、配置下載,在客戶端直接配置在maven的settings.xml中以後每個專案都可以用,配置在pom中只能當前專案用所以下載配置在客戶端中

<?xml version="1.0" encoding="UTF-8"?>


<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
        
        //本地倉庫地址
	<localRepository>E:\repository</localRepository>
	<servers>
                //配置自己新建的倉庫id與,並配置登入名和密碼,用於上傳,此id要和pom檔案中id一致後續介紹
			<server>
				<id>sevice-release</id>
				<username>servicedev</username>
				<password>servicedev</password>
			</server>
                //配置訪問倉庫組的id,配置使用者名稱和密碼,用於從此處下載依賴,id要與下方id一致
			<server>
				<id>maven-central</id>
				<username>servicedev</username>
				<password>servicedev</password>
			</server>
	</servers>

	 //配置映象地址,就配置你的maven-public的地址即可
	 <mirrors>
        <mirror>
              <id>maven-central</id>
              <mirrorOf>*</mirrorOf>
              <name>ali cloud centrol mirror.</name>
              <url>http://IP:埠/repository/maven-public/</url>
        </mirror>
    </mirrors>

        //配置下載的地址,都配置成maven-public即可
	<profiles>
		<profile>
			<id>nexus</id>
			<repositories>
				<repository>
					<id>maven-central</id>
					<url>http://IP:埠/repository/maven-public/</url>
					<releases>
						<enabled>true</enabled>
					</releases>
					<snapshots>
						<enabled>true</enabled>
					</snapshots>
				</repository>
			</repositories>
			<pluginRepositories>
				<pluginRepository>
					<id>maven-central</id>
					<url>http://IP:埠/repository/maven-public/</url>
					<releases>
						<enabled>true</enabled>
					</releases>
					<snapshots>
						<enabled>true</enabled>
					</snapshots>
				</pluginRepository>
			</pluginRepositories>
		</profile>
		
		
	</profiles>

        //開啟上邊的地址,與上邊id一致
	<activeProfiles>
		<activeProfile>nexus</activeProfile>
	</activeProfiles>

</settings>

          配置完此處就可以從私服上下載依賴了

          2、配置上傳,在專案的pom檔案中配置,id一定要與settings.xml上傳那塊一致,這塊URL配置的是自己建立的倉庫地址

<distributionManagement>
        <repository>
            <!-- 這裡的ID要和setting的id一致 -->
            <id>sevice-release</id>
            <url>http://IP:埠/repository/service-dev/</url>
        </repository>
</distributionManagement>

           接著deploy就可以上傳,如果出現上傳一次之後就不能再上傳回到自己建立的倉庫一定要把是否重複上傳選擇重複上傳

到此整個nexus就搭建完成了