centos环境docker安装nexus3搭建maven私有仓库

  1. 拉取最新nexus3镜像

docker pull nexus3
  1. 创建宿主机上的映射文件目录,并授权

[root@1-0002 ~]# mkdir -p /mnt/lckj/nexus/data
[root@1-0002 ~]# chmod -R +777 /mnt/lckj/nexus/data
  1. 运行redis,生成相应容器

-d 后台启动

[root@1-0002 ~]# docker run -d --name nexus3 -p 8500:8081 --restart always -v /mnt/lckj/nexus/data:/nexus-data sonatype/nexus3
  1. 查看日志,验证是否启动成功

[root@1-0002 ~]# docker logs -f nexus3
2023-02-02 01:41:24,674+0000 INFO  [jetty-main-1] *SYSTEM com.softwarementors.extjs.djn.servlet.DirectJNgineServlet - Servlet GLOBAL configuration: registryConfiguratorClass=
2023-02-02 01:41:24,690+0000 INFO  [jetty-main-1] *SYSTEM com.softwarementors.extjs.djn.jscodegen.CodeFileGenerator - Creating source files for APIs...
2023-02-02 01:41:24,828+0000 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - JAX-RS RuntimeDelegate: org.sonatype.nexus.siesta.internal.resteasy.SisuResteasyProviderFactory@45aca9b
2023-02-02 01:41:24,864+0000 INFO  [jetty-main-1] *SYSTEM org.jboss.resteasy.plugins.validation.i18n - RESTEASY008550: Unable to find CDI supporting ValidatorFactory. Using default ValidatorFactory
2023-02-02 01:41:25,889+0000 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - Initialized
2023-02-02 01:41:25,896+0000 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.repository.httpbridge.internal.ViewServlet - Initialized
2023-02-02 01:41:25,925+0000 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.handler.ContextHandler - Started o.e.j.w.WebAppContext@12197923{Sonatype Nexus,/,file:///opt/sonatype/nexus/public/,AVAILABLE}
2023-02-02 01:41:25,967+0000 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.AbstractConnector - Started ServerConnector@cd6155e{HTTP/1.1, (http/1.1)}{0.0.0.0:8081}
2023-02-02 01:41:25,968+0000 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.Server - Started @41236ms
2023-02-02 01:41:25,968+0000 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer - 
-------------------------------------------------

Started Sonatype Nexus OSS 3.37.3-02

-------------------------------------------------
  1. nexus访问

访问http://ip:8500/,点击右上角sign in进行登录操作,默认用户名密码admin/admin123,如果不对,需要到如下路径中查找

[root@1-0002 mnt]# cat lckj/nexus/data/admin.password 
34b430c2-c0e7-4705-a4d1-87914a92e5ec
[root@1-0002 mnt]# 

第一次登录时,会提示修改密码,并对访问进行设置,设置为所有人访问都需要验证。

  1. 默认的nexus配置说明

默认仓库说明

maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
maven-releases:私库发行版jar,初次安装请将Deployment policy设置为Allow redeploy
maven-snapshots:私库快照(调试版本)jar
maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml或项目pom.xml中使用

nexus仓库类型说明

hosted:本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。
proxy:代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
group:仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。
  1. 创建Blob Stores

centos环境docker安装nexus3搭建maven私有仓库_第1张图片
  1. 创建proxy repository代理仓库

centos环境docker安装nexus3搭建maven私有仓库_第2张图片

create repository-->select recipe【maven2 (proxy)】-->create repository:maven2(proxy),设置内容如下

name:custom_proxy
remote storage:https://maven.aliyun.com/repository/public/
Blob store:custom

create repository保存即可。

  1. 创建hosted repository仓库

create repository-->select recipe【maven2 (hosted)】-->create repository:maven2(hosted),设置内容如下

name:custom_hosted
version policy:Mixed
Blob store:custom
Deployment policy:Allow redeploy

create repository保存即可。

  1. 创建group repository仓库

create repository-->select recipe【maven2 (group)】-->create repository:maven2(group),设置内容如下

name:custom_group
Blob store:custom
Member repositories中Members按照从上至下的顺序为custom_hosted,custom_proxy,maven-central

create repository保存即可。

  1. maven配置

centos环境docker安装nexus3搭建maven私有仓库_第3张图片

复制组仓库之地,修改setting.xml配置文件


    
      
        custom_group  
        admin  
        admin123  
       
    
    
       
      
        custom_group  
        custom_group  
        http://ip:8500/repository/custom_group/  
        central  
         
  
  1. deploy部署jar包到私服

release和snapshots jar包区别

SNAPSHOT版本代表不稳定(快照版本),还在处于开发阶段,随时都会有变化。
当上传同样的版本号jar包的时候,SNAPSHOT会在版本号的后面自动追加一串新的数字,即日志标签,
nexus会根据日志标签区分出不同的版本,在maven引用时,如果使用的是snapshot版本,
重新导入maven的时候,会去私库拉取最新上传的代码。
 
RELEASE则代表稳定的版本(发布版本),一般上线后都会改用RELEASE版本。
也就是说1.0,2.0这样的版本只能有一个,也就是说当前版本号下,不可能出现不同的jar。

create repository-->select recipe【maven2 (hosted)】-->create repository:maven2(hosted),设置内容如下

name:custom_snapshots
version policy:Snapshot
Blob store:custom
Deployment policy:Allow redeploy

create repository保存即可。

修改custom_group配置,增加custom_snapshots

Member repositories中Members按照从上至下的顺序为custom_hosted,custom_snapshots,custom_proxy,maven-central

create repository-->select recipe【maven2 (hosted)】-->create repository:maven2(hosted),设置内容如下

name:custom_releases
version policy:releases
Blob store:custom
Deployment policy:Allow redeploy

create repository保存即可。

修改custom_group配置,增加custom_releases

Member repositories中Members按照从上至下的顺序为custom_hosted,custom_snapshots,custom_releases,custom_proxy,maven-central
  1. 项目pom.xml配置

可以在项目的pom文件中设置具体的relaeses库和snapshots库。如果当前项目的版本号的后缀名中带着-SNAPSHOT,类似***-SNAPSHOT,就会将项目jar包提交到snapshots库中,没有带-SNAPSHOT的话会提交releases库中

setting.xml中配置

  
    custom_snapshots  
    admin  
    admin123  

  
    custom_releases  
    admin  
    admin123  

pom.xml中配置

    
        
            custom_group
            custom_group
            http://ip:8500/repository/custom_group/
            
                true
            
            
                true
            
        
    
    
        
            custom_group
            custom_group
            http://ip:8500/repository/custom_group/
            
                true
            
            
                true
            
        
    

    
        
            custom_releases
            custom_releases
            http://ip:8500/repository/custom_releases/
        
        
            custom_snapshots
            custom_snapshots
            http://ip:8500/repository/custom_snapshots/
        
    

项目下执行如下命令,即可在custom_snapshots仓库中查看到当前上传的jar文件

mvn clean deploy -Dmaven.test.skip=true
  1. 问题总结

nexus/data目录一定要授权,最开始只是授权nexus,data没有授权,导致启动报错。

idea配置maven时重写了配置文件,但是默认还是查找maven中配置的setting.xml文件,导致调用的仓库地址不正确,后来同步maven中的setting.xml配置文件。

本文章参考自https://blog.csdn.net/BThinker/article/details/123688143

你可能感兴趣的:(docker,nexus,maven,centos,docker,nexus,maven私有仓库)