什么是nexus?
nexus是一個maven倉庫管理器,使用nexus可以快速便捷的搭建自己的maven私有倉庫。
docker安裝nexus
拉取鏡像
docker pull sonatype/nexus3
后台執行鏡像
docker run -d -p 8081:8081 --name nexus-dev
查看nexus容器是否啟動
訪問本地的nexus
在瀏覽器url地址中輸入localhost:8081,如果此時未能成功加載,等待幾秒后再嘗試刷新瀏覽器。
成功訪問后,點擊右上角sigin,按照提示從指定目錄下獲取admin賬號的密碼。
添加常用代理源
選擇maven2代理方式
添加阿里雲代理源
設置常用代理到maven-public
maven-public是一個聚合倉庫,當從這個倉庫中獲取依賴時,它會從成員列表中依次往下遍歷,從對應的成員倉庫中獲取依賴。
設置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按鈕,查看控制台輸出
查看nexus上是否存在這個依賴
創建一個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>