目录
[1. 什么是 Maven 私服?](#1. 什么是 Maven 私服?)
[2. 私服基本原理](#2. 私服基本原理)
[3. 配置 Maven 私服](#3. 配置 Maven 私服)
[4. 上传 Jar 到私服](#4. 上传 Jar 到私服)
[5. 从私服下载依赖](#5. 从私服下载依赖)
[6. 总结](#6. 总结)
1. 什么是 Maven 私服?
Maven 私服(Private Repository)是一个存放构件的仓库服务器,通常部署在公司或团队内部,用来:
-
缓存中央仓库资源,节省下载时间,减少外网依赖
-
保存公司内部的私有构件(不能公开到中央仓库)
-
提高构建速度与安全性
常见私服软件:
-
Nexus Repository Manager(最常用)
-
Apache Archiva
-
JFrog Artifactory
2. 私服基本原理
Maven 获取依赖的顺序:
-
本地仓库
-
私服(如 Nexus)
-
中央仓库
私服不仅能下载依赖,还能上传自己的 Jar 包,供团队内部使用。
3. 配置 Maven 私服
文件名:~/.m2/settings.xml
语言类型:XML(复制直接可用)
XML
<settings>
<!-- 私服认证信息 -->
<servers>
<server>
<id>maven-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<!-- 镜像配置(让所有请求走私服) -->
<mirrors>
<mirror>
<id>nexus-mirror</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
</mirrors>
</settings>
4. 上传 Jar 到私服
文件名:pom.xml
语言类型:XML
XML
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo-lib</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<distributionManagement>
<repository>
<id>maven-releases</id>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
</project>
Java 示例文件:src/main/java/com/example/HelloLib.java
语言类型:Java
java
package com.example;
public class HelloLib {
public static String sayHello(String name) {
return "Hello, " + name + "!";
}
}
上传命令:
java
mvn clean deploy
运行后 Maven 会把 jar 上传到 Nexus 私服的对应仓库。
5. 从私服下载依赖
文件名:pom.xml
(另一个项目用来依赖上面的 Jar)
语言类型:XML
XML
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo-app</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>demo-lib</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>
Java 示例文件:src/main/java/com/example/App.java
语言类型:Java
java
package com.example;
public class App {
public static void main(String[] args) {
System.out.println(HelloLib.sayHello("Maven Private Repo"));
}
}
运行:
java
mvn clean package
java -cp target/demo-app-1.0.0.jar com.example.App
输出结果:
java
Hello, Maven Private Repo!
6. 总结
-
私服作用:缓存依赖 + 上传私有构件
-
关键配置:
-
settings.xml
:账号、密码、镜像 -
pom.xml
:distributionManagement
上传地址
-
-
命令:
-
上传:
mvn clean deploy
-
使用:添加依赖 + 构建运行
-