Maven私服(Maven Repository)是一个可以存储、共享和管理项目依赖包的地方。通过在本地搭建Maven私服,可以将私有的或者企业内部的依赖包发布到私服中,避免每个开发者从外部仓库下载重复的依赖。本文将详细记录如何在Linux环境中部署Maven私服(以Nexus为例)。
1. 环境准备
1.1 系统要求
- 操作系统:Linux(本文以CentOS为例)
- Java环境:安装Java 8及以上版本
- 网络要求:服务器需要有公网或内网访问
1.2 安装Java
首先,确保你的Linux系统已经安装了Java环境。如果没有安装,可以通过以下命令来安装OpenJDK:
# 查看系统中已安装的Java版本
java -version# 安装OpenJDK 8
sudo yum install java-1.8.0-openjdk-devel# 确保安装后Java正确配置
java -version
1.3 安装wget
Nexus下载需要wget
工具,因此确保系统中安装了wget
,如果没有安装,可以通过以下命令安装:
sudo yum install wget
2. 安装Nexus Repository Manager
Nexus是目前最流行的Maven私服之一,它不仅支持Maven,还支持Docker、npm等多种包管理工具。
2.1 下载Nexus
访问 Nexus官方页面 获取最新版本的Nexusnexus下载地址:https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/3/nexus-3.68.1-02-unix.tar.gz,也可以直接使用wget
下载:
# 下载Nexus的最新版本
wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz
2.2 解压安装包
解压下载的Nexus安装包:
# 创建一个目录来存放Nexus
sudo mkdir /opt/nexus# 解压下载的tar.gz文件
sudo tar -zxvf latest-unix.tar.gz -C /opt/nexus --strip-components=1
2.3 创建nexus用户
出于安全考虑,不建议使用root用户运行Nexus。我们将为Nexus创建一个新的用户。
# 创建一个nexus用户
sudo useradd nexus# 给nexus目录权限
sudo chown -R nexus:nexus /opt/nexus# 为nexus用户配置权限
sudo chmod -R 755 /opt/nexus
2.4 配置Nexus为后台服务
为了让Nexus以后台服务的形式启动,我们需要创建一个systemd
服务文件。
# 创建nexus服务文件
sudo vi /etc/systemd/system/nexus.service
在文件中添加以下内容:
[Unit]
Description=Nexus Repository Manager
After=network.target[Service]
Type=forking
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=nexus
LimitNOFILE=65536
TimeoutStartSec=30[Install]
WantedBy=multi-user.target
2.5 启动Nexus服务
使用以下命令启动Nexus服务:
# 重新加载systemd服务
sudo systemctl daemon-reload# 启动Nexus服务
sudo systemctl start nexus# 设置Nexus开机自启
sudo systemctl enable nexus# 检查Nexus服务状态
sudo systemctl status nexus
2.6 访问Nexus Web UI
Nexus默认的Web界面地址为:http://<server-ip>:8081。你可以使用浏览器访问Nexus,默认的用户名和密码是:
- 用户名:
admin
- 密码:在
/opt/nexus/sonatype-work/nexus3/admin.password
文件中可以找到。
访问后登录到Nexus Web UI。
3. 配置Nexus作为Maven私服
3.1 创建仓库
在Nexus Web UI中,你可以创建多个仓库来存储不同类型的Maven依赖。我们将创建一个maven-releases
仓库和一个maven-snapshots
仓库。
3.1.1 创建Maven Releases仓库
-
登录到Nexus Web UI。
-
进入 Repository 页面。
-
点击 Create repository,选择 Maven 2 (hosted) 类型。
-
配置仓库:
- Name:
maven-releases
- Blob store:默认
- Version policy:
Release
- 其他设置保持默认。
- Name:
-
保存并创建。
3.1.2 创建Maven Snapshots仓库
按照同样的步骤创建一个maven-snapshots
仓库,设置 Version policy
为 Snapshot
。
3.2 配置Maven settings.xml
为了让本地Maven构建工具能够将依赖上传到我们的Nexus私服,需要在Maven的settings.xml
文件中配置Nexus的地址。
3.2.1 修改settings.xml
打开Maven的settings.xml
配置文件,通常在~/.m2/settings.xml
,如果没有这个文件,可以手动创建。添加以下配置:
<servers><server><id>nexus-releases</id><username>admin</username><password>admin_password</password></server><server><id>nexus-snapshots</id><username>admin</username><password>admin_password</password></server>
</servers><mirrors><mirror><id>nexus</id><mirrorOf>external:http://repo1.maven.org/maven2</mirrorOf><url>http://<server-ip>:8081/repository/maven-public/</url><blocked>false</blocked></mirror>
</mirrors>
<id>
:设置为你在Nexus中创建的仓库名称<username>
和<password>
:默认用户名和密码<url>
:Nexus仓库的URL地址
3.2.2 配置Maven上传插件
在pom.xml
中,你需要配置上传的插件,来将本地构建的jar包上传到Nexus仓库。
<distributionManagement><repository><id>nexus-releases</id><url>http://<server-ip>:8081/repository/maven-releases/</url></repository><snapshotRepository><id>nexus-snapshots</id><url>http://<server-ip>:8081/repository/maven-snapshots/</url></snapshotRepository>
</distributionManagement>
4. 上传和下载Maven依赖
4.1 上传依赖包到Nexus
上传一个Maven项目时,只需使用以下命令即可将项目发布到Nexus私服:
mvn clean deploy
Maven将会把构建后的jar包上传到配置的Nexus仓库中。
4.2 配置Maven使用私服下载依赖
在Maven的pom.xml
文件中添加以下配置,以便从私服下载依赖:
<repositories><repository><id>nexus-releases</id><url>http://<server-ip>:8081/repository/maven-releases/</url></repository><repository><id>nexus-snapshots</id><url>http://<server-ip>:8081/repository/maven-snapshots/</url></repository>
</repositories>
5. 维护和优化
- 定期清理仓库:在生产环境中,随着依赖包的增多,私服的存储会逐渐膨胀。Nexus提供了自动清理的功能,可以定期删除未使用的包。
- 安全配置:确保Nexus Web UI和仓库的安全性,尤其是管理账号的权限配置。
- 备份:定期备份Nexus仓库的数据,避免数据丢失。