Linux搭建自己Nexus私服

10次阅读

共计 3325 个字符,预计需要花费 9 分钟才能阅读完成。

本文介绍如何在 Linux 服务器通过 Docker 搭建 Nexus 私服

一、安装 Nexus

docker run -d -p 8081:8081 --name nexus -v /srv/nexus/nexus-data:/var/nexus-data --restart=always sonatype/nexus3

通过 docker logs -f nexus 查看启动日志,当出现 Started Sonatype Nexus OSS 说明启动成功,这时通过 http://ip:8081 即可访问

点击右上角 Sign in 进行登录,账号为admin,密码需要去镜像中查看

# 进入镜像
docker exec -it nexus bash
# 查看密码,路径在登录框会提示,然后复制即可,登陆成功后会让你修改密码
cat /nexus-data/admin-password

至此,就启动完成了,进入主页后点击左边菜单栏的 Browse 即可查看你拥有的仓库啦

二、Nexus 仓库

1、仓库类型

Nexus 有四种仓库和四种仓库类型

a、仓库

仓库名 描述
maven-central maven 中央库,默认从 https://repo1.maven.org/maven…
maven-releases 私库发行版 jar
maven-snapshots 私库快照(调试版本)jar
maven-public 仓库分组,把上面三个仓库组合在一起对外提供服务,在本地 maven 基础配置 settings.xml 中使用

b、类型

类型 描述
group(仓库组类型) 用于方便开发人员自己设定的仓库
hosted(宿主类型) 内部项目的发布仓库(内部开发人员,发布上去存放的仓库)
proxy(代理类型) 从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的 Configuration 页签下 Remote Storage Location 属性的值即被代理的远程仓库的路径)
virtual(虚拟类型) 虚拟仓库(这个基本用不到,重点关注上面三个仓库的使用)

2、拉取 jar 包流程

Maven 可直接从宿主仓库下载构件,也可以从代理仓库下载构件,而代理仓库间接的从远程仓库下载并缓存构件,为了方便,Maven 可以从仓库组下载构件,而仓库组并没有实际的内容(下图中用虚线表示,它会转向包含的宿主仓库或者代理仓库获得实际构件的内容)

3、创建仓库

进过上面的讲解,我们对仓库已经有了了解,接下来我们进行创建仓库,分为是 代理仓库 (proxy) 宿主仓库 (hosted) 仓库组 (group),点击主页上面的小螺丝然后在选择Repositories 进入仓库管理列表,然后就可以开始创建我们的仓库啦,选择仓库类型的时候一定要选择maven2

a、proxy 代理仓库

我们使用阿里的中央仓库

b、hosted 宿主仓库

这里可以创建 releasessnapshot类型的仓库,这里就演示一种

c、group 仓库组

三、项目配置

前两章走完我们已经在 Linux 服务器部署好了 nexus 并且创建好了我们的仓库,接下来我们就来试着在项目中配置

1、创建一个 Maven 项目

为了演示,就随便创建个工具类玩,以下是目录结构

2、pom 文件

这里为了演示我就配了 release 仓库,实际上应该同时要配置 snapshot 仓库,maven 会判断版本后面是否带了-SNAPSHOT,如果带了就发布到 snapshots 仓库,否则发布到 release 仓库

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.gjing</groupId>
    <artifactId>demo</artifactId>
    <version>1.0</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <distributionManagement>
        <repository>
            <!--ID 可以随便写,但是要与 maven 的 setting 文件中一致 -->
            <id>releases</id>
            <!-- 指向仓库类型为 hosted(宿主仓库)的储存类型为 Release 的仓库 ---->
            <url>http:// 你 nexus 仓库的 IP:8081/repository/me-release/</url>
        </repository>
    </distributionManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.8.2</version>
            </plugin>
        </plugins>
    </build>
</project>

3、maven 配置 setting 文件

id 一定要和项目 pom 文件中的 一致

  <servers>
    <server>
      <id>releases</id><!-- 对应项目 pom 文件中设置的 -->
      <username>admin</username>
      <password>admin123</password>
    </server>
  </servers>

四、发布

如果使用的是 IDEA 开发工具可以直接在右边工具栏 Maven 工具点击 deploy,也可以直接在命令行进入本项目根目录进行 mvn deploy

这时 nexus 私服上也会出现我们的 jar 包

到此就发布成功啦

五、使用

让 maven 项目使用 nexus 作为远程仓库有两种方式,第一种是在项目的 pom.xml 中进行更改,让单个项目使用 nexus 仓库;另一种是通过修改 maven 的配置文件 settings.xml 进行更改,让所有项目都使用 nexus 仓库。我们这里采取第二种,只需要 setting.xml 就可以了。还有就是拉取 jar 的私服仓库地址只要写我们的仓库组就 ok,因为在创建这个组的时候,里面已经包含了其它三个仓库

1、settings.xml 文件

在 maven 的 settings 文件中找到mirrors,加上我们组仓库的mirror,url 填写我们创建的组地址即可,id、name 可以随便填写,mirrorOf 可以和我写一样的

  <mirrors>
    <mirror>
        <id>mynexus</id>
        <name>myself nexus repository</name>
        <url>http://xxx:8081/repository/me-group/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>

2、验证

只需要在其他项目中 pom 文件引入即可,成功引入且在项目中可以正常使用我们刚刚定义的工具类


到此整个流程就结束啦,如果有任何问题可以在评论区告诉我哦!!!

正文完
 0