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

2 篇文章 0 订阅
1 篇文章 0 订阅
  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

  1. 创建proxy repository代理仓库

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配置

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

<!--nexus服务器,id为组仓库name-->
  <servers>  
    <server>  
        <id>custom_group</id>  
        <username>admin</username>  
        <password>admin123</password>  
    </server>   
  </servers>  
  <!--仓库组的url地址,id和name可以写组仓库name,mirrorOf的值设置为central-->  
  <mirrors>     
    <mirror>  
        <id>custom_group</id>  
        <name>custom_group</name>  
        <url>http://ip:8500/repository/custom_group/</url>  
        <mirrorOf>central</mirrorOf>  
    </mirror>     
  </mirrors>
  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,类似<version>***-SNAPSHOT</version>,就会将项目jar包提交到snapshots库中,没有带-SNAPSHOT的话会提交releases库中

setting.xml中配置

<server>  
    <id>custom_snapshots</id>  
    <username>admin</username>  
    <password>admin123</password>  
</server>
<server>  
    <id>custom_releases</id>  
    <username>admin</username>  
    <password>admin123</password>  
</server>

pom.xml中配置

    <repositories>
        <repository>
            <id>custom_group</id>
            <name>custom_group</name>
            <url>http://ip:8500/repository/custom_group/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>custom_group</id>
            <name>custom_group</name>
            <url>http://ip:8500/repository/custom_group/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>
<!--项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件jar等部署到远程仓库。 -->
    <distributionManagement>
        <repository><!--部署项目产生的构件到远程仓库需要的信息 -->
            <id>custom_releases</id><!-- 此处id和settings.xml的id保持一致 -->
            <name>custom_releases</name>
            <url>http://ip:8500/repository/custom_releases/</url>
        </repository>
        <snapshotRepository><!--构件的快照部署到哪里?如果没有配置该元素,默认部署到repository元素配置的仓库,参见distributionManagement/repository元素 -->
            <id>custom_snapshots</id><!-- 此处id和settings.xml的id保持一致 -->
            <name>custom_snapshots</name>
            <url>http://ip:8500/repository/custom_snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

项目下执行如下命令,即可在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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

紫雪群飘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值