Administrator
发布于 2022-05-23 / 0 阅读
0
0

docker安装Nexus Maven 私服

docker安装Nexus Maven 私服

1 mkdir nexus

2 vi docker-compose.yml


3 docker-compose up -d

4 chown -R 200 /mydata/nexues

5 run -it -p 8081:8081 --privileged=true --name nexus -e NEXUS_CONTEXT=nexus -v

/mydata/nexues:/nexus-data 1a196aa9c4f4

6 浏览器访问





Nexus在3.17版本后,密码改成随机的了,登录密码不是admin123,进入/usr/local/nexus-3.19.1-

01/sonatype-work/nexus3/目录下,编辑vim admin.password,拿到密码,账号admin,输入账号密码登录

成功


version: '3.1'

1

services:

2

nexus:

3

restart: always

4

image: sonatype/nexus3

5

container_name: nexus

6

ports:

7

  • 8081:8081
  • 8

    volumes:

    9

  • /mydata/nexues/data:/nexus-data
  • 10

    http://123.60.148.250:8081/nexus

    进入管理页面


    Browse可以查看当前有多少仓库,搭建好的Nexus,默认会带有一些maven仓库,一般使用这些仓库就

    足够了。

    默认仓库说明

    maven-central:maven中央库,默认从

    拉取jar

    maven-releases:私库发行版jar,初次安装请将Deployment policy设置为Allow redeploy

    maven-snapshots:私库快照(调试版本)jar

    maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置

    settings.xml或项目pom.xml中使用

    仓库类型

    Group:这是一个仓库聚合的概念,用户仓库地址选择Group的地址,即可访问Group中配置的,

    用于方便开发人员自己设定的仓库。maven-public就是一个Group类型的仓库,内部设置了多个仓库,访

    问顺序取决于配置顺序,3.x默认Releases,Snapshots,                                  Central,当然你也可以

    自己设置。

    Hosted:私有仓库,内部项目的发布仓库,专门用来存储我们自己生成的jar文件

    3rd party:未发布到公网的第三方jar (3.x去除了)

    Snapshots:本地项目的快照仓库

    Releases: 本地项目发布的正式版本

    Proxy:代理类型,从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签

    下Remote Storage属性的值即被代理的远程仓库的路径),如可配置阿里云maven仓库

    Central:中央仓库

    Apache Snapshots:Apache专用快照仓库(3.x去除了)

    三、增加新的代理源

    1、首先如下图


    https://repo1.maven.org/maven2/

    2、选择添加maven2的代理


    3、添加代理(Cache统一设置为200天 288000)

    Name 填写 aliyun, URL输入:

    ,其他值默认。


    http://maven.aliyun.com/nexus/content/groups/public/

    4、选择Configuration > Repository, 双击 maven-public, 在Group区域将aliyun移到右侧Members, 上移到

    maven-central的上面, 点击 Save。



    5、项目中配置:

    Step1: 找到你本地的maven安装目录,我的在D:\Program Files\apache-maven-3.6.3\conf。 然后呢,

    到conf目录下,打开setting.xml。 找到这个标签,在里面添加两个

    配置。

    nexus-releases

    admin

    chengzl168

    nexus-snapshots

    admin

    chengzl168

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

    a.先配置远程仓库地址

    nexus

    Nexus Snapshot Repository

    true

    http://127.0.0.1:8081/repository/maven-public/

    true

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

    在pom文件中加入distributionManagement节点,注意:pom.xml中repository里的id需要和.m2中

    setting.xml里的server id名称保持一致

    nexus-releases

    User Project Release

    nexus-snapshots

    User Project SNAPSHOTS


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

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

    用mvn命令:mvn clean deploy -xxx



    http://127.0.0.1:8081/repository/maven-releases

    http://127.0.0.1:8081/repository/maven-snapshots

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

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

    1.0-SNAPSHOT


    snapshot和release版本的区别

    在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并

    发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次。我们知道,maven的依赖管理是基于

    版本管理的,对于发布状态的artifact,如果版本号相同,即使我们内部的镜像服务器上的组件比本地

    新,maven也不会主动下载的。如果我们在开发阶段都是基于正式发布版本来做依赖管理,那么遇到这

    个问题,就需要升级组件的版本号,可这样就明显不符合要求和实际情况了。但是,如果是基于快照版

    本,那么问题就自热而然的解决了,而maven已经为我们准备好了这一切。

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

    正式版本。

    如果是快照版本:

    如果是正式发布版本:

    所以,我们在开发阶段,可以将公用库的版本设置为快照版本,而被依赖组件则引用快照版本进行

    开发,在公用库的快照版本更新后,我们也不需要修改pom文件提示版本号来下载新的版本,直接mvn

    执行相关编译、打包命令即可重新下载最新的快照库了,从而也方便了我们进行开发。

    那么在发布包的时候mvn deploy时会自动发布到快照版本库中

    而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上

    下载最新的快照版本。

    那么在发布包的时候mvn deploy时会自动发布到正式版本库中,

    而使用正式版本的模块,在不更改版本号的情况下,编译打包时如果本地已经存在该版本的模块则不

    会主动去镜像服务器上下载。


    本文整理自实践经验,如有问题欢迎交流讨论。


    评论