Maven - 远程仓库Nexus(私服)


我们在使用maven的时候,对于项目所依赖的jar包,maven默认会在中央仓库下载jar包,到本地的磁盘目录(如果没有配置则是用户目录下/.m2/repository文件夹下)。如果公司内部搭了一个maven私服的话,开发人员将仓库地址指向内网仓库地址,需要的jar包可直接在私服取,下载速度比远程要快,如果本地仓库没有则自动从远程下载并保存在本地。本文使用nexus搭建一个私服。

一、Nexus下载安装

1)下载Nexus 👈 - 下载最新版本,这里使用nexus-3.14.0-04

2)Nexus安装 - 解压缩到本地即可

3)修改配置 - Nexus安装目录下 nexus-3.14.0-04 / etc / nexus-default.properties 配置表中可以修改以下属性:

application-host: Nexus服务监听的主机
application-port: Nexus服务监听的端口
nexus-context-path: Nexus服务的上下文路径

- 这里我保持默认设置

4)Nexus服务启动

以管理员身份运行cmd -> 进入到nexus安装目录../nexus-3.14.0-04/bin目录下
● nexus.exe/install:安装nexus服务
● nexus.exe/start:启动nexus服务
● nexus.exe/stop:停止nexus服务

- 安装完成之后,在windows服务里边将看到如下图所示:

5)测试nexus是否安装成功

① 启动服务后,根据 nexus-default.properties 的配置进行登录,如果没有修改,可以在浏览器中输入http://localhost:8081来登录
② 默认用户名:admin,密码:admin123

nexus可以正常访问和登录,这就说明nexus已经安装成功。

二、使用Nexus(私服)

1)私服工作原理

配置Nexus之前,需要先了解一下私服的工作原理,如下图:

找依赖包的流程: 首先在本地仓库中找,如果没命中,那么就找远程私服;远程私服的查找规则同样是先找host属性的私有库,然后再去找proxy属性的远程仓库;可以配置多个proxy;

2)Nexus仓库类型介绍

默认安装有以下这几个仓库,在控制台也可以修改远程仓库的地址,第三方仓库等

● hosted(宿主仓库库):存放本公司开发的jar包(正式版本、测试版本)
● proxy(代理仓库):代理中央仓库、Apache下测试版本的jar包
● group(组仓库):使用时连接组仓库,包含Hosted(宿主仓库)和Proxy(代理仓库)

3)上传jar包到远程仓库

对于中央仓库没有的jar包,需要我们自己将jar包发布到私服中去,其中jar包主要分为两类:
② 本地自己开发供给项目组其余同事使用,这种直接配置项目的pom文件和maven的setting文件,之后deploy发布即可发布到
① 第三方jar包,可以直接使用web页面上传并设置对应GAV即可

1.在Maven的 setting.xml 中配置nexus访问权限

<servers>
    <!-- 配置nexus权限 -->
    <server>
        <id>releases</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
    <server>
        <id>snapshots</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
</servers>

2.在项目的pom.xml中配置nexus仓库位置

<!--配置pom 将jar包可以上传到nexus仓库中 -->
<distributionManagement>
    <!-- 发布版 -->
    <repository>
        <id>releases</id>
        <url>http://localhost:8081/repository/maven-releases/</url>
    </repository>
    <!-- 快照版 -->
    <snapshotRepository>
        <id>snapshots</id>
        <url>http://localhost:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

3.使用deploy命令将项目打包,发布到nexus中

4.检查仓库中是否有上传好的jar包

注意:

① 这里只有Snapshot的仓库上传成功,Release仓库并没有上传成功,这是因为版本号名称结尾有SNAPSHOT,默认以这个结尾是不会上传到Release仓库去的,去除就会上传到Release仓库且不会上传到快照仓库
② Release仓库默认不支持重复发布,可配置
③ :setting中server标签下的id要和pom文件中仓库配置的id相同,即指定上传到哪个仓库

4)从远程仓库下载jar包

1.使用profiles标签在Maven的setting.xml中配置仓库组maven-public,仓库组包括releases、snapshots、central

<profiles>
    <!-- 配置nexus远程仓库地址,从远程仓库下载jar包 -->
    <profile>
        <id>mynexus</id>
        <repositories>
            <repository>
                <id>nexus</id>
                <name>Nexus Repository</name>
                <url>http://localhost:8081/repository/maven-public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
    </profile>
</profiles>

2.激活profiles标签 - activeProfile的属性需和profile的ID一致

<!-- 激活profiles -->
<activeProfiles>
    <activeProfile>mynexus</activeProfile>
</activeProfiles>

3.测试

① 如果之前打包了,删除本地仓库下的mapper.jar
② 关闭mapper子项目,让service子项目依赖mapper.jar包
③ 更新项目,从远程仓库中获取mapper.jar

Maven控制台 - Maven Console

这里显示我们Downloaded了

5)使用自定义用户和自定义仓库进行上传和下载jar包

1.建议先将管理员密码修改;

2.在Roles中可以增加用户权限组,里边可以自定义用户权限;

Roles -> Create role

设置完然后点击创建【Create role】

3.在Users中可以增加用户,分配设置好的权限;

Users -> Create local user

4.在Repositories中新建仓库;

① name:仓库名称;
② version pollcy:版本策略;
 - Release:发行版;
 - Snapshot:快照版;
 - Mixed:混合模式;
③ Layout pollcy:布局策略;
 - Strict:严格;
 - Permissive:宽松;
④ Deployment pollcy:部署策略;
 - Allow redeploy:允许重新部署;
 - Disable redeploy:禁止重新部署;
 - Read-only:只读;

Repositories -> Create repository -> 设置Name仓库名称、Deployment pollcy部署策略(允许重复部署)

 - 自定义仓库创建完成。

5、修改配置,将jar包上传到自定义仓库,然后从自定义仓库下载jar包;

- pom.xml修改

- maven/conf/settins.xml修改

- 修改仓库组,将自定义仓库添加进去,不用的提取出来,保存

- 配置完成,上传下载方式与上面一致。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM