虚拟机Ubuntu使用Docker搭建Maven私服

环境

本文环境实施是在虚拟机上面跑Nexus,然后本地进行开发测试。具体如下

  • 虚拟机环境

    • VMware+Ubuntu20.04
    • Docker 19.03
  • 本地环境

    • 系统:win 10

安装Nexus

在远程主机运行一下命令:

docker pull sonatype/nexus3
  • 1

上面命令的意思是下载一个nexus3的镜像

继续执行:

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

上面命令是指使用nexus3镜像创建并启动一个容器,然后指定暴露8081端口到对应主机的8081端口

将容器内部/var/nexus-data挂载到主机/root/nexus-data目录。

如果没有任何问题的话,Nexus应该是搭建成功了。

此时在浏览器输入:http://ip:8081即可看到以下页面:(ip为远程主机(VMware)的ip地址)

 点击右上方的Sign in进行登录

进入容器中查看密码是多少

docker exec -it 容器名/容器id /bin/bash

上图红色框内即初始密码,用户名为admin。

继续访问, 修改密码

下图:
这里写图片描述
可以看到默认情况下Nexus会帮我们创建了几个仓库,仔细观察红色框住的地方,里面有几种仓库的类型,解释如下:

  • proxy 远程仓库的代理,比如说nexus配置了一个central repositoryproxy,当用户向这个proxy请求一个artifact的时候,会现在本地查找,如果找不到,则会从远程仓库下载,然后返回给用户。
  • hosted 宿主仓库,用户可以把自己的一些仓库deploy到这个仓库中
  • group 仓库组,是nexus特有的概念,目的是将多个仓库整合,对用户暴露统一的地址,这样就不需要配置多个仓库地址。

 下面我们仔细看一下里面的一些仓库。点击maven-central仓库:
这里写图片描述
可以看到是一个proxy类型的仓库,他代理的远程仓库地址是https://repo1.maven.org/maven2/

修改私服的中央仓库位置,如果嫌国外的站点太慢了, 我们就将其修改成阿里云,修改方式就是替换一下链接就ok

后退,在进入maven-public查看:
这里写图片描述
可以看到这是一个group类型的仓库,里面包含了maven-releases/maven-snapshots/maven-central仓库,意思是我们只需要在本地添加这个仓库,则可以依赖到上述3个仓库中的库了。

准备工作

为了实现本地上传代码库,并且实现依赖的示例,这里创建一个新的仓库(也可以选用已经存在的仓库)和一个用户

选择创建的仓库类型是hosted类型,为什么非得选择这种类型呢? 如下表中解密

项目具体说明
hosted本地存储。像官方仓库一样提供本地私库功能
proxy提供代理其它仓库的类型
group组类型,能够组合多个仓库为一个地址提供服务

创建仓库,点击Create repository,然后选择maven2(hosted)然后输入仓库名称(test-release)。在version policy中选择这个仓库的类型,这里选择release,在Deployment policy中选择Allow redeploy(这个很重要).

创建成功如下:

 创建用户:

创建一个私服的帐号,然后在我的windows本中本地maven添加进去私服的新创建的这个用户的信息, 进而可以使用这个用户往私服中发布jar包

点击左侧菜单栏的Users菜单,然后点击Create local user

填写用户的信息

 创建成功

 

本地操作:

找到本机的settings.xml配置文件, 将我们刚刚创建的私服添加进去

ok, 下面去idea中发布jar包

发布#

使用IDEA创建一个Maven项目:

创建maven项目参考:https://blog.youkuaiyun.com/weixin_37654790/article/details/85333790

修改pop.xml

首先是将连接私服的用户信息配置进配置文件

  1. id 就是上图中的id
  2. url: 在nexus可视化界面中找到我们在上面创建的仓库可以找到url

 

 <version>1.0-RELEASE</version>
  <!--指定仓库地址-->
  <distributionManagement>
    <repository>
      <!--此名称要和.m2/settings.xml中设置的ID一致-->
      <name>mymaven</name>
      <id>zhumengru</id>
      <url>http://192.168.170.128:8081/repository/test-release/</url>
    </repository>
  </distributionManagement>

 准备脚本

插入到build

<build>
        <plugins>
            <!--发布代码Jar插件-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.7</version>
            </plugin>
            <!--发布源码插件-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

简单的代码:

public class TestUtil {

    public static void main(String[] args) {
        System.out.println("I am from test-lib!");
    }

}

发布命令:

去pom目录下运行

mvn deploy 

如无意外,上传成功,回到Nexus的网页中查看结果。

 可以看到已经上传成功。

拉取使用#添加以上到Pom依赖就行

 

测试依赖

本地再次创建一个项目,对这个项目进行依赖.

pom.xml添加如下代码

<dependency>
      <groupId>com.cmbcc.nexus</groupId>
      <artifactId>mymaven</artifactId>
      <version>1.0-RELEASE</version>
    </dependency>
  </dependencies>
  <repositories>
    <repository>
      <id>zhumengru</id>
      <url>http://192.168.170.128:8081/repository/test-release/</url>
    </repository>
  </repositories>

即可依赖

至此完成了Docker中使用Nexus部署maven私有仓库的所有步骤。

 

为什么最后这里没显示那个依赖包呢??

参考:

https://blog.youkuaiyun.com/u012943767/article/details/79475718

 

<think>嗯,用户想基于两台虚拟机,一台Rocky9部署Nexus,另一台Ubuntu通过本地源安装deb包,并且能用Maven编译Spring Boot项目。首先,我需要理清楚整个流程,确保每个步骤正确。 首先,Rocky9上部署NexusNexus通常用来做私有仓库,支持多种格式,比如MavenDocker、APT等。用户可能需要配置APT仓库在Nexus里,这样Ubuntu就可以通过这个仓库安装deb包。不过,Nexus默认可能没有启用APT仓库,需要手动配置。可能需要先安装Java,因为Nexus需要Java环境。然后下载Nexus的tar包,解压安装,配置服务,设置开机启动,修改防火墙规则开放8081端口。安装完成后,初始密码在sonatype-work目录里,登录后要修改密码,创建APT仓库。 接下来是Ubuntu那边配置本地源,也就是指向Nexus的APT仓库。需要确保Ubuntu能访问Rocky9的IP和端口。可能需要编辑/etc/apt/sources.list.d/nexus.list,添加deb的源地址。然后apt update更新源,之后就可以用apt安装包了。这部分需要检查Nexus的APT仓库配置是否正确,以及权限是否开放,是否需要认证,如果有的话,得在sources.list里加上用户名密码。 然后是Maven编译Spring Boot项目。Maven的settings.xml需要配置NexusMaven仓库地址,这样构建时会从Nexus拉取依赖。可能需要配置mirror或者repository,具体要看Nexus里的Maven仓库设置。还要确保Spring Boot项目的pom.xml里的仓库配置正确,或者覆盖全局配置。可能需要测试构建,看依赖是否能正确下载。 可能遇到的问题:Nexus服务没启动,防火墙阻止访问,APT仓库配置错误导致Ubuntu无法更新源,Maven配置不正确导致依赖下载失败。需要一步步排查,比如检查端口连通性,查看Nexus日志,确认APT仓库的URL是否正确,Maven的settings.xml是否指向正确的仓库。 另外,用户提到的是本地源安装deb包,这里的本地源可能指的是Nexus作为APT仓库,而Ubuntu从这个仓库安装,而不是传统的本地文件系统。所以需要确认Nexus是否支持APT仓库,或者是否需要安装插件。比如Nexus Repository Manager 3默认可能不支持APT,需要启用相关的仓库类型,可能需要使用raw仓库或者其他方式。或者用户可能误解了本地源的概念,可能需要进一步澄清,但根据描述,应该是用Nexus作为APT仓库。 总结步骤:Rocky9安装Nexus配置APT仓库,Ubuntu配置APT源指向Nexus,测试安装deb包;配置Maven使用NexusMaven仓库,编译Spring Boot项目。需要注意Nexus的仓库类型是否正确,网络连通性,以及各个客户端的配置是否正确。</think>好的,我将分步骤说明如何实现这个需求,以下是技术实现流程: --- ### **一、环境准备** 1. **Rocky9虚拟机** - IP地址:假设为`192.168.1.100` - 开放端口:8081(Nexus默认端口) - 确保已安装Java环境:`sudo dnf install java-11-openjdk` 2. **Ubuntu虚拟机** - IP地址:假设为`192.168.1.200` - 确保可访问Rocky9的8081端口 --- ### **二、Rocky9部署Nexus** #### 1. 下载并安装Nexus ```bash # 创建专用用户 sudo useradd nexus -s /sbin/nologin sudo mkdir /opt/nexus && cd /opt/nexus # 下载Nexus sudo wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz sudo tar -zxvf latest-unix.tar.gz sudo chown -R nexus:nexus /opt/nexus # 配置服务 sudo vi /etc/systemd/system/nexus.service ``` 服务文件内容: ```ini [Unit] Description=Nexus Service After=network.target [Service] Type=forking User=nexus ExecStart=/opt/nexus/nexus-3.xx.xx/bin/nexus start ExecStop=/opt/nexus/nexus-3.xx.xx/bin/nexus stop Restart=on-failure [Install] WantedBy=multi-user.target ``` 启动服务: ```bash sudo systemctl daemon-reload sudo systemctl start nexus sudo systemctl enable nexus ``` #### 2. 初始化Nexus 1. 访问 `http://192.168.1.100:8081` 2. 获取初始密码:`sudo cat /opt/nexus/sonatype-work/nexus3/admin.password` 3. 按向导完成配置,创建APT仓库: - 选择 `Repository > Create Repository > apt (hosted)` - 设置名称:`ubuntu-local` - 勾选 `Allow redeploy`(允许重复上传包) --- ### **三、Ubuntu配置本地APT源** #### 1. 配置APT源指向Nexus ```bash # 创建源配置文件 sudo vi /etc/apt/sources.list.d/nexus.list ``` 添加内容: ```text deb [trusted=yes] http://192.168.1.100:8081/repository/ubuntu-local/ / ``` 更新源: ```bash sudo apt update ``` #### 2. 上传deb包到Nexus仓库 通过Nexus Web界面上传: 1. 访问 `http://192.168.1.100:8081` 2. 进入 `ubuntu-local` 仓库 3. 拖拽本地deb包到界面中 或使用curl上传: ```bash curl -u admin:密码 -X POST "http://192.168.1.100:8081/service/rest/v1/components?repository=ubuntu-local" -F "apt.asset=@/path/to/package.deb" ``` #### 3. 测试安装deb包 ```bash sudo apt install 包名 ``` --- ### **四、Maven编译Spring Boot项目** #### 1. 配置Maven仓库指向Nexus 编辑 `~/.m2/settings.xml`: ```xml <mirrors> <mirror> <id>nexus-maven</id> <name>Nexus Maven Mirror</name> <url>http://192.168.1.100:8081/repository/maven-public/</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> ``` #### 2. 编译项目 ```bash mvn clean package -DskipTests ``` --- ### **五、验证流程** 1. **APT源验证** - `apt policy 包名` 查看是否来自Nexus仓库 2. **Maven验证** - 检查构建日志是否从Nexus下载依赖 - 成功生成`target/*.jar` --- ### **常见问题** 1. **Nexus端口不通** - 检查防火墙:`sudo firewall-cmd --zone=public --add-port=8081/tcp --permanent` 2. **APT更新失败** - 检查 `/etc/apt/sources.list.d/nexus.list` 格式 - 确认Nexus仓库权限为`Allow anonymous access` --- 通过以上步骤,您已实现基于Nexus的APT本地源和Maven私服集成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值