使用nexus搭建maven私庫


什么是nexus?

nexus是一個maven倉庫管理器,使用nexus可以快速便捷的搭建自己的maven私有倉庫。

docker安裝nexus

拉取鏡像

docker pull sonatype/nexus3

后台執行鏡像

docker run -d -p 8081:8081 --name nexus-dev

查看nexus容器是否啟動

查看nexus

訪問本地的nexus

在瀏覽器url地址中輸入localhost:8081,如果此時未能成功加載,等待幾秒后再嘗試刷新瀏覽器。

nexus啟動頁面

成功訪問后,點擊右上角sigin,按照提示從指定目錄下獲取admin賬號的密碼。

登陸界面

添加常用代理源

選擇maven2代理方式

選擇代理方式

添加阿里雲代理源

阿里雲代理源

設置常用代理到maven-public

maven-public是一個聚合倉庫,當從這個倉庫中獲取依賴時,它會從成員列表中依次往下遍歷,從對應的成員倉庫中獲取依賴。

maven-public

設置release倉庫可重復發布

配置release倉庫可重復發布之后,可以重復發布同一個版本號的依賴。這里大家可以根據實際情況勾選是否啟用。

release倉庫

本地maven配置

配置好私有倉庫之后,我們需要修改本地的maven配置和項目中的pom文件才能夠跟私有倉庫進行互動操作。

修改settings.xml

這里需要注意settings.xml文件的優先級(用戶級別>全局設置>自定義路徑),具體的配置看下面的xml文件。

<?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>D:\Program Files\Maven\repository</localRepository>

  <pluginGroups>
  </pluginGroups>

  <proxies>
  </proxies>

  <servers>
      <server>
          <id>nexus</id>
          <username>admin</username>
          <password>chenhao.123</password>
      </server>
  </servers>

  <mirrors>
      <mirror>
          <id>nexus</id>
          <mirrorOf>*</mirrorOf>
          <url>http://localhost:8081/repository/maven-public/</url>
      </mirror>
  <profiles>
      <profile>
          <id>jdk-1.8</id>
          <properties>
              <maven.compiler.source>1.8</maven.compiler.source>
              <maven.compiler.target>1.8</maven.compiler.target>
              <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
          </properties>
      </profile>
      <profile>
          <id>nexus</id>
          <repositories>
              <repository>
                  <id>maven-public</id>
                  <url>http://localhost:8081/repository/maven-public/</url>
                  <releases>
                      <enabled>true</enabled>
                  </releases>
                  <snapshots>
                      <enabled>false</enabled>
                  </snapshots>
              </repository>
              <repository>
                  <id>maven-snapshots</id>
                  <url>http://localhost:8081/repository/maven-snapshots/</url>
                  <releases>
                      <enabled>false</enabled>
                  </releases>
                  <snapshots>
                      <enabled>true</enabled>
                  </snapshots>
              </repository>
              <repository>
                  <id>maven-releases</id>
                  <url>http://localhost:8081/repository/maven-releases/</url>
                  <releases>
                      <enabled>true</enabled>
                  </releases>
                  <snapshots>
                      <enabled>false</enabled>
                  </snapshots>
              </repository>
          </repositories>
          <pluginRepositories>
              <pluginRepository>
                  <id>maven-public</id>
                  <url>http://localhost:8081/repository/maven-public/</url>
                  <releases>
                      <enabled>true</enabled>
                  </releases>
                  <snapshots>
                      <enabled>false</enabled>
                  </snapshots>
              </pluginRepository>
              <pluginRepository>
                  <id>maven-snapshots</id>
                  <url>http://localhost:8081/repository/maven-snapshots/</url>
                  <releases>
                      <enabled>false</enabled>
                  </releases>
                  <snapshots>
                      <enabled>true</enabled>
                  </snapshots>
              </pluginRepository>
              <pluginRepository>
                  <id>maven-releases</id>
                  <url>http://localhost:8081/repository/maven-releases/</url>
                  <releases>
                      <enabled>true</enabled>
                  </releases>
                  <snapshots>
                      <enabled>false</enabled>
                  </snapshots>
              </pluginRepository>
          </pluginRepositories>
      </profile>

  </profiles>
    <activeProfiles>
        <activeProfile>jdk-1.8</activeProfile>
        <activeProfile>nexus</activeProfile>
    </activeProfiles>
</settings>

創建一個maven項目A作為依賴提供者

這里在idea創建一個maven模板的項目即可,沒有什么特別的操作。

修改A項目的pom.xml

    <distributionManagement>
        <repository>
            <id>nexus</id>
            <name>releases Repository</name>
            <url>http://127.0.0.1:8081/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>nexus</id>
            <name>snapshots Repository</name>
            <url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

在A項目中創建一個Math作為測試

package com.chenhao.util;

public class Math {
    public static int add(int a, int b){
        return a+b;
    }
}

將項目A的jar包發布到私有倉庫

在idea項目右邊的maven工具來中,點擊deploy按鈕,查看控制台輸出

deploy

查看nexus上是否存在這個依賴

nexus depencies

創建一個maven項目B作為依賴使用者

這里創建一個項目B來作為依賴的使用者,並且需要注意的是,在項目A中使用了deploy操作,此時已經將依賴上傳到本地倉庫。所以此時應該將本地倉庫中的依賴刪除。

package com.chenhao;
import com.chenhao.util.Math;
public class Main {
    public static void main(String[] args) {
        System.out.println(Math.add(1, 1));
    }
}

修改項目B的pom.xml

 <dependencies>
        <dependency>
            <groupId>com.chenhao</groupId>
            <artifactId>example</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

運行項目B

run project b


免責聲明!

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



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