Nexus3搭建本地仓库

一、安装Nexus3

1、docker-compose.yaml 配置

注:8081端口是开放给后台使用的,5000和5001端口是开放给仓库使用的,换成别的也可以,只要配置docker仓库时填写开放的端口就可以了,我没有单独 映射,都用的8081

version: "3.0"
services:
    nexus:
        image: sonatype/nexus3:3.38.1
        container_name: nexus3
        ports:
            - 8081:8081
            - 5000:5000
            - 5001:5001
        environment:
            NEXUS_CONTEXT: nexus3
        volumes:
            - ./data:/nexus-data
        environment:
            ES_JAVA_OPTS: "-Xmx1024m -Xms1024m"
2、启动nexus

使用 docker-compose up -d 启动启动,后访问 http://192.168.40.147:8081/
在这里插入图片描述
登录用户名admin密码通过 cat data/admin.password 查看
登录后可修改密码为好记的密码

3、安装可能遇到问题

问题:
启动后通过docker ps -a查看nexus3的状态为退出,在docker-compose.yaml同级目录下可查看其启动的日志,通过 docker-compose logs -f 命令查看,发现没有权限访问宿主机创建文件目录

解决方法:
可手动创建 mkdir data/instances 创建完后再查看状态为启动了
如果还未解决:授权 chmod 777 data/

二、配置docker仓库

1、概述
  1. 默认仓库说明
    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中使用

  2. Nexus仓库类型介绍
    Nexus3 提供了的3种类型的Docker仓库,前两者都可以创建多个仓库,最后一个则可以将他们全部聚合到一个URL来访问。
    hosted:本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。
    proxy:代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
    group:仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。
    在这里插入图片描述

2、创建Blob Stores

填写name,路径会自动生成,你也可以自己修改挂载地址
在这里插入图片描述
blob stores有两个,一个是系统默认的,一个是刚创建的。如果不想自己创建,使用系统默认的文件存储目录也是可以的。到时候创建repository时,存储目录选择default就可以了。新创建的目录,可以在/data/blobs/目录下面可以看到。

3、配置仓库
1)配置hosted类型的

在这里插入图片描述
hosted类型仓库用作我们的私有仓库。注意红框中的配置,填写完毕,点击创建仓库
在这里插入图片描述

上图的Hosted设置选项,选项中有三个值:
Allow redeploy:允许同一个版本号下重复提交代码, nexus以时间区分
Disable redeploy:不允许同一个版本号下重复提交代码
Read-Only:不允许提交任何版本
原生的maven-releases库是Disable redeploy设置, maven-snapshots是Allow redeploy。

2)配置proxy类型的

proxy类型仓库,可以帮助我们访问不能直接到达的网络,如另一个私有仓库,或者国外的公共仓库
在这里插入图片描述
在这里插入图片描述
这里推荐几个远程仓库:

jboss的maven中央仓库地址:http://repository.jboss.com/maven2/
阿里云的maven中央仓库地址:http://maven.aliyun.com/nexus/content/groups/public/
apache的maven中央仓库地址:http://repo.maven.apache.org/maven2/

3)配置group类型的

在这里插入图片描述
在这里插入图片描述

必须将hosted repositories【托管资源库】的顺序放在proxy repositories【代理资源库】之前,因为一个group【组资源库】中可以涵括这些托管资源库和代理资源库。而一整个的group是作为一个public,一个接口给别人使用的。所以当查找架包的时候,如果代理资源库在前面,那就是先从远程去查找jar,而不是先从托管资源库(本地仓库)去查找是否有jar。这样访问外网的消耗比起来在本地查找,当然是将托管资源库放在代理资源库之前的优先位置了。

4、Maven配置

apache-maven-3.6.3下的setting.xml文件和项目中的pom.xml文件的关系是:settting.xml文件是全局设置,而pom.xml文件是局部设置。pom.xml文件对于项目来说,是优先使用的。而pom.xml文件中如果没有配置镜像地址的话,就按照settting.xml中定义的地址去查找。
在这里插入图片描述
如上图方式获取组仓库smart_group的仓库地址,修改setting.xml文件如下:

  <localRepository>d:/maven_test/</localRepository>
   <!--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://192.168.124.189:8081/repository/custom_group/</url>  
        <mirrorOf>central</mirrorOf>  
    </mirror>     
  </mirrors>

修改后可以重新编译项目,必须添加参数-U,(-U,–update-snapshots,强制更新releases、snapshots类型的插件或依赖库,否则maven一天只会更新一次snapshot依赖)。代理仓库会从远程中央仓库下载jar包。

mvn clean compile -U
5、管理平台上传三方jar包

有些jar是第三方提供的,在中央仓库中是没有的,我们可以上传这些本地三方jar包到hosted repository宿主仓库中。
在这里插入图片描述
在这里插入图片描述
上传成功后,就可以看到hosted repository和group repository中已经有了刚上传的三方jar包
在这里插入图片描述

6、命令上传三方jar包

在setting.xml配置文件中添加hosted repository server

<!--id自定义,但是在使用命令上传的时候会用到-->
<server>  
    <id>custom_hosted</id>  
    <username>admin</username>  
    <password>admin123</password>  
</server>

使用如下命令上传jar包:

mvn deploy:deploy-file -DgroupId=com.sinoeyes -DartifactId=hspharm-paas-enum -Dversion=1.0.0-dev2.0-SNAPSHOT -Dpackaging=jar -DpomFile="E:\hspharm\work\hspharm-paas-enum-1.0.0-dev2.0-SNAPSHOT.pom" -Dfile="E:\hspharm\work\hspharm-paas-enum-1.0.0-dev2.0-SNAPSHOT.jar" -Durl=http://192.168.180.47:8081/repository/hspharm-host/ -DrepositoryId=hspharm-host

命令解释:

-DgroupId=byd.ghy            自定义
-DartifactId=portal-auth             自定义
-Dversion=1.0.0                自定义,三个自定义,构成pom.xml文件中的标识
-Dpackaging=jar               传的类型是jar类型
-Dfile=D:\auth-server.jar            jar包的本地磁盘位置
-Durl=http://ip:8081/repository/custom_hosted/  hosted资源库的地址
-DrepositoryId=custom_hosted         需要和setting.xml文件中配置的ID一致

上传成功后,hosted repository中已经可以看到了
在这里插入图片描述

7、deploy部署jar包到私服

release和snapshots jar包区别

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

RELEASE则代表稳定的版本(发布版本),一般上线后都会改用RELEASE版本。
也就是说1.0,2.0这样的版本只能有一个,也就是说当前版本号下,不可能出现不同的jar。
创建snapshot仓库

可以在nexus上添加一个snapshot仓库,专门用于存放snapshot版本的jar包。snapshot仓库也是hosted类型的,创建方式和hosted repository类型。创建好后,加入到组仓库里面就可以了。
在这里插入图片描述
一定要选择Deployment Policy为allow redeploy
在这里插入图片描述
在这里插入图片描述
同样的操作,创建Release类型的仓库,并加入到组中

8、项目pom.xml文件配置

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

在pom.xml文件中配置 distributionManagement 节点如下,在项目中执行deploy命令后,jar包将会被上传到nexus中。

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>Nexus Repository</name>
            <url>http://192.168.124.189:8081/repository/custom_group/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>custom_group</id>
            <name>Nexus Plugin Repository</name>
            <url>http://192.168.124.189:8081/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>Nexus Release Repository</name>
            <url>http://192.168.124.189:8081/repository/custom_releases/</url>
        </repository>
        <snapshotRepository><!--构件的快照部署到哪里?如果没有配置该元素,默认部署到repository元素配置的仓库,参见distributionManagement/repository元素 -->
            <id>custom_snapshots</id><!-- 此处id和settings.xml的id保持一致 -->
            <name>Nexus Snapshot Repository</name>
            <url>http://192.168.124.189:8081/repository/custom_snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

默认地,maven编译打包不会下载SNAPSHOT版本的jar包,所以还需要在pom.xml文件中配置支持下载snapshot版本jar包。

mvn clean deploy -Dmaven.test.skip=true
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建本地maven中央仓库的详细步骤如下: 1. 下载并安装NexusNexus官网下载最新的Nexus OSS,安装并启动。 2. 配置Nexus 打开Nexus的管理控制台,在左侧导航栏中选择Repositories,然后点击Create repository按钮,创建一个仓库。选择Hosted repository类型,命名为maven-releases(用于存储发布版本),再次点击Create repository按钮创建仓库。同样的方式,创建一个命名为maven-snapshots的Hosted repository类型的仓库(用于存储快照版本)。 3. 配置Maven的settings.xml文件 在Maven的conf目录下找到settings.xml文件,在文件中添加如下配置: ``` <mirrors> <mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://localhost:8081/repository/maven-public/</url> </mirror> </mirrors> <repositories> <repository> <id>maven-releases</id> <url>http://localhost:8081/repository/maven-releases/</url> </repository> <repository> <id>maven-snapshots</id> <url>http://localhost:8081/repository/maven-snapshots/</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <servers> <server> <id>maven-releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>maven-snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers> ``` 其中,mirrors用于指定Maven使用Nexus作为镜像源,repositories用于指定Nexus仓库的地址和名称,servers用于指定连接Nexus仓库的用户名和密码。 4. 发布项目到本地仓库 在项目的pom.xml文件中添加如下配置: ``` <distributionManagement> <repository> <id>maven-releases</id> <url>http://localhost:8081/repository/maven-releases/</url> </repository> <snapshotRepository> <id>maven-snapshots</id> <url>http://localhost:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement> ``` 然后使用Maven的deploy命令将项目发布到本地仓库中: ``` mvn deploy ``` 这样,项目就会被发布到maven-releases或maven-snapshots仓库中。 至此,本地maven中央仓库搭建就完成了。可以通过访问Nexus的web界面来查看已经发布到仓库中的项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值