zoukankan      html  css  js  c++  java
  • 搭建maven私有中央仓库

    1.nexus下载

    这边也是直接给出下载的地址: https://www.sonatype.com/download-oss-sonatype,如果下载不起,可以在百度网盘中下载

    链接:https://pan.baidu.com/s/1fYJdSehWDLNqGdiSCuhTCQ
    提取码:812g

    下载后解压文件

    2.nexus启动

    进入加压目录的bin目录如:D:Program Files exus-3.18.1-01-win64 exus-3.18.1-01in,打开cmd窗口,输入命令:nexus /run

    等待一段时间后出现

    当看到这个画面的时候表示,nexus已经启动完成

    3.访问nexus仓库

    在浏览器中输入 localhost:8081 默认用户名和密码是: admin,默认密码:admin123,或者在

    登陆后提示修改 ,如修改文admin123

    4.仓库相关配置

    maven仓库类型

    maven仓库类型只有3中,分别是: hosted、proxy、group

    • hosted:宿主类型 内部项目的发布仓库,专门用来存储我们自己生成的jar文件
    • proxy:代理类型 从远程中央仓库中寻找数据的仓库,如可配置阿里云maven仓库
    • group:组类型 组仓库用来方便我们开发人员进行设置的仓库

    简单来说: group = hosted+proxy

    版本类型

    • release:专用于部署发布版本的jar
    • snapshot:专用于部署快照版本的jar,jar都是以-SNAPSHOT结尾,pom中version需以-SNAPSHOT(必须大写)结尾
    • mixed:可包含release和snapshot版本

    权限管理

    数据权限:repository权限有两种类型:

    • repository admin
    • repository view

    每种类型又有6种权限标识,分别是:*,add,browse、delete、edit、read,*包含其它5种权限,也可以自定义操作标识,正常系统的生成权限足够使用

    增加阿里代理仓库

    第一步 按照步骤添加新的代理源

    第二步选择添加maven2的代理

    第三步添加代理

    Name 填写 aliyun, URL输入:http://maven.aliyun.com/nexus/content/groups/public/,其他值默认。

    选择Configuration > Repository, 双击 maven-public, 在Group区域将aliyun移到右侧Members, 上移到maven-central的上面, 点击 Save。

     

    5.项目中配置连接参考:

     Step1: 找到你本地的maven安装目录,我的在D:Program Filesapache-maven-3.6.3conf。 然后呢,到conf目录下,打开setting.xml。 找到<servers></servers>这个标签,在里面添加两个<server></server>配置。

        <server>
            <id>releases</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
        
        <server>
            <id>snapshots</id>
            <username>admin</username>
            <password>admin123</password>
        </server>

    配置后如图

    Step2: 打开你的Maven项目,在pom.xml里面加两段.

    a.先配置远程仓库地址

        <repositories>
            <!-- 配置nexus远程仓库 -->
            <repository>
                <id>nexus</id>
                <name>Nexus Snapshot Repository</name>
                <url>http://127.0.0.1:8081/repository/maven-public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>

    <repositories>的配置,你可以在它下面添加多个<repository> ,每个<repository>都有它唯一的ID,一个描述性的name,以及最重要的,远程仓库的url。此外,

    <releases><enabled>true</enabled></releases>告诉Maven可以从这个仓库下载releases版本的构件

    <snapshots><enabled>false</enabled></snapshots>告诉Maven不要从这个仓库下载snapshot版本的构件。

    禁止从公共仓库下载snapshot构件是推荐的做法,因为这些构件不稳定,且不受你控制,你应该避免使用。当然,如果你想使用局域网内组织内部的仓库,你可以激活snapshot的支持。

    b.配置打包时发布jar包到私有仓库

    在pom文件中加入distributionManagement节点,注意:pom.xml中repository里的id需要和.m2中setting.xml里的server id名称保持一致

        <distributionManagement>
            <repository>
                <id>releases</id>
                <name>User Project Release</name>
                <url>http://127.0.0.1:8081/repository/maven-releases</url>
            </repository>
            <snapshotRepository>
                <id>snapshot</id>
                <name>User Project SNAPSHOTS</name>
                <url>http://127.0.0.1:8081/repository/maven-snapshots</url>
            </snapshotRepository>
        </distributionManagement>

    Step3.打包jar包到私有maven仓库

    要注意:如果想要发布到远程仓库, 使用IDEA开发的话,打包不能用package,而要选择deploy。或者使用mvn命令:mvn clean deploy -xxx

    注意:如果想发布到snapshot仓库中,则需要在版本号后加上-SNAPSHOT(注意这里必须是大写)

    也就是pom.xml文件中version 要改成 1.0-SNAPSHOT 

    <version>1.0-SNAPSHOT</version>

    snapshot和release版本的区别

            在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次。我们知道,maven的依赖管理是基于版本管理的,对于发布状态的artifact,如果版本号相同,即使我们内部的镜像服务器上的组件比本地新,maven也不会主动下载的。如果我们在开发阶段都是基于正式发布版本来做依赖管理,那么遇到这个问题,就需要升级组件的版本号,可这样就明显不符合要求和实际情况了。但是,如果是基于快照版本,那么问题就自热而然的解决了,而maven已经为我们准备好了这一切。

            maven会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。

    如果是快照版本:

    • 那么在发布包的时候mvn deploy时会自动发布到快照版本库中
    • 而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。

    如果是正式发布版本:

    • 那么在发布包的时候mvn deploy时会自动发布到正式版本库中,
    • 而使用正式版本的模块,在不更改版本号的情况下,编译打包时如果本地已经存在该版本的模块则不会主动去镜像服务器上下载。

            所以,我们在开发阶段,可以将公用库的版本设置为快照版本,而被依赖组件则引用快照版本进行开发,在公用库的快照版本更新后,我们也不需要修改pom文件提示版本号来下载新的版本,直接mvn执行相关编译、打包命令即可重新下载最新的快照库了,从而也方便了我们进行开发。

    打包之后,登录maven仓库地址:ip:port. 你看,已经OK了,可以看到包已经在私有库了。

     这样就可以在项目中使用了,但是这样是不允许匿名用户下载的,如果真要允许匿名用户能够下载,需要配置:

     

     将“Allow anonymous users to access the server”勾选就可以匿名访问了,去掉则需要用户名和密码

    重复发布的时候出现:

    Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases.

    原因:经排查发现是因为重复发布导致的。maven私有仓库默认不允许重复部署。

    浏览器登录nexus管理界面–>设置图标–>Repository–>Repositories–>maven-releases–>Hosted–>请选择‘Allow redeploy’策略,默认是disable策略,然后保存。 请注意,不同版本的nexus,进入的路径可能有细微区别。

    • 如果出现400,需要注意项目下的pom.xml文件和maven使用的setting.xml文件的配置是否一致。
    • 如果出现401,需要检查maven使用的setting.xml中的帐号和密码是否正确,相应的repository是否为“Allow Redeploy”。
    • 如果使用的intellij、eclipse或myeclipse需要注意ide中使用的setting.xml和maven命令行下的setting.xml是否一致;否则或出现许多莫名其妙的问题。

    https://blog.csdn.net/weixin_34026484/article/details/91962553

    https://www.liangzl.com/get-article-detail-38682.html

  • 相关阅读:
    python Matplotlib数据可视化神器安装与基本应用
    linux笔记
    appium自动化环境搭建
    C#实现局域网聊天 通讯 Socket TCP 多人
    layui 关闭弹出层方法
    allure生成漂亮的测试报告
    python内置测试框架unittest
    Python安全编程
    Python Web自动化测试
    Docker从入门到放弃
  • 原文地址:https://www.cnblogs.com/grasp/p/12427474.html
Copyright © 2011-2022 走看看