Linux部署maven私服

Maven私服(Maven Repository)是一个可以存储、共享和管理项目依赖包的地方。通过在本地搭建Maven私服,可以将私有的或者企业内部的依赖包发布到私服中,避免每个开发者从外部仓库下载重复的依赖。本文将详细记录如何在Linux环境中部署Maven私服(以Nexus为例)。

1. 环境准备

1.1 系统要求

  • 操作系统:Linux(本文以CentOS为例)
  • Java环境:安装Java 8及以上版本
  • 网络要求:服务器需要有公网或内网访问

1.2 安装Java

首先,确保你的Linux系统已经安装了Java环境。如果没有安装,可以通过以下命令来安装OpenJDK:

java 复制代码
# 查看系统中已安装的Java版本
java -version

# 安装OpenJDK 8
sudo yum install java-1.8.0-openjdk-devel

# 确保安装后Java正确配置
java -version

1.3 安装wget

Nexus下载需要wget工具,因此确保系统中安装了wget,如果没有安装,可以通过以下命令安装:

javascript 复制代码
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下载:

javascript 复制代码
# 下载Nexus的最新版本
wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz

2.2 解压安装包

解压下载的Nexus安装包:

javascript 复制代码
# 创建一个目录来存放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创建一个新的用户。

javascript 复制代码
# 创建一个nexus用户
sudo useradd nexus

# 给nexus目录权限
sudo chown -R nexus:nexus /opt/nexus

# 为nexus用户配置权限
sudo chmod -R 755 /opt/nexus

2.4 配置Nexus为后台服务

为了让Nexus以后台服务的形式启动,我们需要创建一个systemd服务文件。

javascript 复制代码
# 创建nexus服务文件
sudo vi /etc/systemd/system/nexus.service

在文件中添加以下内容:

javascript 复制代码
[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服务:

javascript 复制代码
# 重新加载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仓库
  1. 登录到Nexus Web UI。

  2. 进入 Repository 页面。

  3. 点击 Create repository ,选择 Maven 2 (hosted) 类型。

  4. 配置仓库:

    • Namemaven-releases
    • Blob store:默认
    • Version policyRelease
    • 其他设置保持默认。
  5. 保存并创建。

3.1.2 创建Maven Snapshots仓库

按照同样的步骤创建一个maven-snapshots仓库,设置 Version policySnapshot

3.2 配置Maven settings.xml

为了让本地Maven构建工具能够将依赖上传到我们的Nexus私服,需要在Maven的settings.xml文件中配置Nexus的地址。

3.2.1 修改settings.xml

打开Maven的settings.xml配置文件,通常在~/.m2/settings.xml,如果没有这个文件,可以手动创建。添加以下配置:

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仓库。

XML 复制代码
<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私服:

XML 复制代码
mvn clean deploy

Maven将会把构建后的jar包上传到配置的Nexus仓库中。

4.2 配置Maven使用私服下载依赖

在Maven的pom.xml文件中添加以下配置,以便从私服下载依赖:

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仓库的数据,避免数据丢失。
相关推荐
Fly_hao.belief10 分钟前
泛型的讲解(泛型类、泛型方法、泛型接口)
java
我命由我1234515 分钟前
15.Java 网络编程(网络相关概念、InetAddress、NetworkInterface、TCP 网络通信、UDP 网络通信、超时中断)
java·开发语言·网络·后端·tcp/ip·udp·java-ee
sunshine__sun17 分钟前
自动化测试报错:Exception managing chrome: error decoding response body
java·前端·chrome
蓝天星空29 分钟前
spring boot 3集成swagger
java·spring boot
君逸~~34 分钟前
RK3568(二)——字符设备驱动开发
linux·驱动开发·笔记·学习·rk3568
漫漫不慢.36 分钟前
//需求:定义一个数组,存入1~5.要求打乱数组中所有数据的顺序
java
不修×蝙蝠38 分钟前
搭建Tomcat(一)---Socket&ServerSocket
java·服务器·笔记·tomcat·socket·serversocket
牛奔43 分钟前
解决 Mac(M1/M2)芯片,使用node 14版本
linux·macos·编辑器·vim
小参宿1 小时前
【Stream流】
java·开发语言
ruleslol1 小时前
java基础概念49-数据结构2
java·数据结构