您现在的位置是:首页 > 正文

Nexus私服搭建及Maven集成(Windows版本 - 巨详细)

2024-02-01 02:53:30阅读 2

一、Nexus下载

下载地址:https://www.sonatype.com/products/repository-oss-download
PS:此处链接访问后,会让你填一些信息才能让你访问到具体的下载页面。这里可以随意填写,不用嫌麻烦,填好后就会出现具体的下载页面,如图:
在这里插入图片描述
如果你实在不想填,可以直接访问:https://www.sonatype.com/thanks/repo-oss
这个地址就是填完后跳转的具体下载页面。
这里我选择的是OSS 3.X - Windows版本,下载后解压会得到如下结构的文件夹:
在这里插入图片描述
到此,下载部分就全部完成了。

二、运行Nexus

进入到nexus-3.38.1-01/bin目录下,打开cmd命令窗口,输入命令:

nexus.exe/run

然后安静等待启动完成,访问http://127.0.0.1:8081,即可看到如下界面:
在这里插入图片描述
到此,Nexus的启动步骤也完成了,非常简单。
PS:

  • Nexus的默认端口为8081,可以在nexus-3.38.1-01/etc目录下的nexus-default.properties
    文件中修改:
    在这里插入图片描述
    我因为Jenkins已经将8081端口占用了,所以将端口修改为了8082。
  • 成功进入页面后点击Sign in进行登陆,账号为admin,密码提示会告诉你在磁盘的具体位置(sonatype-work\nexus3\admin.password),找到并复制即可登录成功。成功登录后会让你修改密码。修改后会做简单的配置,比如支不支持上传包到Nexus服务器等,这里选择支持即可,后面会使用到。

三、Nexus仓库介绍及阿里云配置

3.1 仓库介绍

点击菜单”Browse“,可以看到当前的仓库:
在这里插入图片描述
不同Type代表的含义:

  • hosted :宿主仓库,这个仓库,是用来把公司内部的发布包部署到这个仓库里面来,然后公司内的其他人就可以从这个宿主仓库里去下载依赖使用
  • proxy:代理仓库,这个仓库不是用来给公司内部的发布部署的,是代理了公司外部的各种仓库,例如java.net,codehaus,jboss等等,最重要就是它代理了公司外部的中央仓库,但是这里也可以修改nexus连接为阿里云镜像仓库,阿里云去连接中央仓库。
  • group:仓库组,其实就是将各种宿主仓库、代理仓库全部组成一个虚拟的仓库组,然后我们的项目只要配置依赖一个仓库组,相当于就是可以自动连接仓库组对应的各种仓库。
  • virtual:虚拟仓库

不同仓库的含义:

  • maven-central:这是代理仓库,代理maven中央仓库
  • maven-releases:该仓库是个宿主仓库,用于部署公司内部的release版本的发布包(类似于1.0.0,,release的意思就是你的工程已经经过了完善的测试,单元测试,集成测试,QA测试,上生产环境使用了)到这个仓库里面,供其他同事在生产环境依赖和使用
  • maven-snapshots:该仓库是个宿主仓库,用于部署公司内部的snapshot版本的发布包到这个仓库里(如果你的某个工程还在开发过程中,测试还没结束,但是,此时公司里其他同事也在开发一些工程,需要依赖你的包进行开发和测试,联调,此时你的工程的版本就是类似1.0.0-SNAPSHOT这样的版本),供其他同事在开发和测试的时候使用
  • maven-public:仓库组,上面所有release仓库都在这个仓库组内

3.2 阿里云配置

登录后,点击上面的设置按钮:
在这里插入图片描述
依次点击”Repositories“、”maven-central
在这里插入图片描述
在如图处配置阿里云中央仓库位置,当你私服中不存在该Jar的时候,它会从阿里云中央仓库下载,提高效率。
阿里云中央仓库地址:http://maven.aliyun.com/nexus/content/repositories/central/

在这里插入图片描述
配置完成后,划到最下面点击保存即配置成功。
至此,Nexus的搭建基本上就完成了,接下来就是本地Maven配置测试了。

四、Maven配置

4.1 settings.xml设置

找到并打开settings.xml文件,添加私服配置:

  1. 在servers中添加如下配置
<servers>
        <!-- server
         | Specifies the authentication information to use when connecting to a
         | particular server, identified by a unique name within the system
         | (referred to by the 'id' attribute below).
         |
         | NOTE: You should either specify username/password OR
         |       privateKey/passphrase, since these pairings are used together.
         |
        <server>
          <id>deploymentRepo</id>
          <username>repouser</username>
          <password>repopwd</password>
        </server>
        -->

        <!-- Another sample, using keys to authenticate.
        <server>
          <id>siteServer</id>
          <privateKey>/path/to/private/key</privateKey>
          <passphrase>optional; leave empty if not used.</passphrase>
        </server>
        -->

        <!-- 私服密码 -->
        <server>
        	<!-- 这里的id可以随意取,但是我们在pom.xml中配置的id要与此一致 -->
        	<!-- release正式版本 -->
            <id>local-release</id>
            <username>admin</username>
            <password>123456</password>
        </server>
        <server>
       		<!-- 这里的id可以随意取,但是我们在pom.xml中配置的id要与此一致 -->
       		<!-- snapshot快照版本 -->
            <id>local-snapshot</id>
            <username>admin</username>
            <password>123456</password>
        </server>
    </servers>
  1. 在mirrors中添加如下配置:
<!-- 私服地址 -->
<mirror>
	<!--This is used to direct the public snapshots repo in the profile below over to a different nexus group -->
	<id>maven-address</id>
	<mirrorOf>*</mirrorOf>
	<!-- 此处配置你的Nexus地址 -->
	<url>http://127.0.0.1:8082/repository/maven-public/</url>
</mirror>

4.2 pom.xml配置

在项目中的pom.xml中添加如下配置:

	<repositories>
        <repository>
            <id>nexus</id>
            <name>Nexus Repository</name>
            <!-- 这里与settings.xml中配置的url保持一致 -->
            <url>http://127.0.0.1:8082/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <!--snapshots默认是关闭的,需要开启  -->
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

	<!-- 如下配置,如果是微服务项目,可以只加在最外层的pom.xml中,子模块只需加上面的配置即可  -->
    <distributionManagement>
        <snapshotRepository>
        	<!-- 这里的id与settings.xml中配置的id保持一致  -->
            <id>local-snapshot</id>
            <name>LOCAL-SNAPSHOT</name>
            <url>http://127.0.0.1:8082/repository/maven-snapshots/</url>
        </snapshotRepository>

        <repository>
        	<!-- 这里的id与settings.xml中配置的id保持一致  -->
            <id>local-release</id>
            <name>LOCAL-RELEASE</name>
            <url>http://127.0.0.1:8082/repository/maven-releases/</url>
        </repository>
    </distributionManagement>

至此,Nexus的Maven相关配置就完成了。

五、测试

加好配置后,进入对应的项目下,执行 mvn deploy,最后会出现如图所示的日志(前提是你项目能正常install):
在这里插入图片描述
这里我们就可以看到我们的项目已经发布到了私服。具体位置和项目的groupId有关:
在这里插入图片描述
如我这里的groupId是org.example,version后缀带SNAPSHOT,代表快照。会存入我们配置的maven-public仓库下,如图:
在这里插入图片描述
至此Nexus私服的基本搭建及Maven配置就完成了,看完没看完都点个赞呗 ^ - ^

网站文章

  • 叠纸测试开发一面 凉经(投测试 因为 一志愿 软开被挂了)

    I 小白的代数题题目大意小曾的手上最开始有 个糖果,现在有 次操作,每次操作能将小曾手上的数变为原来的 倍加上 个,求每次操作后小曾手上的糖果数之和。等到今天才告诉我offer审批没有通过,我...

    2024-02-01 02:52:59
  • 使用Mybatis框架

    使用Mybatis框架

    配置文件,Spring Boot项目在启动时会自动读取此文件中的配置信息,如果配置信息中的属性名是特定的,Spring Boot还会自动应用这些属性值。在Spring Boot项目中,在。

    2024-02-01 02:52:51
  • 在eclipse中高亮显示相同字符串

    在eclipse中选中一个字符串,则在本源文件中高亮显示相同的字符串,实现这样的功能,只需选中菜单栏的“Toggle Mark Occurrences” 按钮(一个“钢笔头”图标,或使用快捷键Alt+...

    2024-02-01 02:52:18
  • 系分 - 系统测试与维护

    系分 - 系统测试与维护

    软件测试概念(★★)测试方法及阶段(★★★★)软件开发环境与工具(★)可维护性因素(★★)维护类型(★★)

    2024-02-01 02:52:11
  • 【C++】同一个项目下有多个源文件时报错

    【C++】同一个项目下有多个源文件时报错

    C++、bug、同一项目下多个源文件

    2024-02-01 02:52:05
  • Mysql学习总结(11)——MySql存储过程与函数

    Mysql学习总结(11)——MySql存储过程与函数

    2019独角兽企业重金招聘Python工程师标准>>> ...

    2024-02-01 02:51:34
  • html标签被当成文本

    后台在完成功能之后返回json对象 @RequestMapping("/upLoad") @ResponseBody public HarJson upLoad(MultipartFile upfile,String pipeId){ HarJson harJson = new HarJson(); //数据解析 boolean b = false; //获取文件名 S

    2024-02-01 02:51:28
  • html中document.body 与 document.documentElement的区别

    项目中,经常会用到这两个来获取网页的滚动高度 const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; //考虑浏览器兼容 但是具体有啥区别还是有点模糊,这里抽出时间整理一下。 1.document.body 返回html dom中的body节点 即 2....

    2024-02-01 02:51:21
  • Js判空

    Js判空

    2024-02-01 02:50:53
  • 用 Vue 开发自己的 Chrome 扩展程序

    翻译:疯狂的技术宅原文:www.sitepoint.com/build-vue-c…未经允许严禁转载浏览器扩展程序是可以修改和增强 Web 浏览器功能的小程序。它们可用于各种任务,例如阻止广告,管理密码,组织标签,改变网页的外观和行为等等。好消息是浏览器扩展并不难写。可以用你已经熟悉的 Web 技术(HTML、CSS 和 JavaScript)创建 —— 就像普通网页一样。但是与网页不...

    2024-02-01 02:50:49