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仓库的数据,避免数据丢失。
相关推荐
京东云开发者几秒前
Java的SPI机制详解
java
超级小忍22 分钟前
服务端向客户端主动推送数据的几种方法(Spring Boot 环境)
java·spring boot·后端
程序无bug26 分钟前
Spring IoC注解式开发无敌详细(细节丰富)
java·后端
小莫分享29 分钟前
Java Lombok 入门
java
程序无bug29 分钟前
Spring 对于事务上的应用的详细说明
java·后端
食亨技术团队30 分钟前
被忽略的 SAAS 生命线:操作日志有多重要
java·后端
苦学编程的谢1 小时前
Maven
java·maven·intellij-idea
考虑考虑1 小时前
Maven 依赖范围(Scope)
java·后端·maven
张小洛1 小时前
Spring AOP 设计解密:代理对象生成、拦截器链调度与注解适配全流程源码解析
java·后端·spring·spring aop·aop
行止61 小时前
OpenStack云平台管理
linux·openstack