首页 > 其他分享 >从Nexus私服的代理仓库中下载构件(2种方式)和部署构件到Nexus私服的宿主仓库中(2种方式)

从Nexus私服的代理仓库中下载构件(2种方式)和部署构件到Nexus私服的宿主仓库中(2种方式)

时间:2023-08-09 15:35:43浏览次数:35  
标签:Nexus 私服 仓库 nexus 构件 hello


一、从Nexus私服的代理仓库中下载构件(2种方式)

Nexus私服的主要目的之一:代理远程仓库(即当Maven项目需要下载构件到本地仓库时,不再请求外部的远程仓库,而直接从Nexus私服中下载)。 ===》1. 在Maven项目的pom.xml文件中配置Nexus 只对当前项目有效 项目需要下载构件到本地仓库时,会依次从以下配置的Nexus代理仓库中寻找。


<!-- 声明远程仓库,一个repository元素对应一个远程仓库 -->
<repositories>
    <!-- 声明一个Nexus私服上的仓库  -->
    <repository>
        <!-- 
        仓库id 
          仓库的唯一标识。Nexus内置的Maven中央仓库的id为central,如果其他的仓库也使用该id,就会覆盖中央仓库的配置。
        -->
        <id>nexus</id>
        <!-- 仓库名称 -->
        <name>nexus</name>
        <!-- 仓库地址 -->
        <url>http://localhost:8081/nexus/content/repositories/hello_central_proxy/</url>
        <!-- 是否开启该仓库的release版本下载支持 -->
        <releases>
            <enabled>true</enabled>
        </releases>
        <!-- 是否开启该仓库的snapshot版本下载支持 -->
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
<!-- 声明远程插件仓库,一个pluginRepository元素对应一个远程插件仓库 -->
<pluginRepositories>
    <!-- 声明一个Nexus私服上的插件仓库 -->
    <pluginRepository>
        <!-- 插件仓库 id -->
        <id>nexus</id>
        <!-- 插件仓库 名称 -->
        <name>nexus</name>
        <!-- 配置的插件仓库的地址 -->
        <url>http://localhost:8081/nexus/content/repositories/hello_central_proxy/</url>
        <!-- 是否开启该插件仓库的release版本下载支持 -->
        <releases>
            <enabled>true</enabled>
        </releases>
        <!-- 是否开启该插件仓库的snapshot版本下载支持 -->
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

 

===》2. 在Maven安装目录/conf目录和本地仓库目录下的settings.xml文件中配置Nexus
  对本机中的所有项目有效
  setting.xml不支持直接配置repositories和pluginRepositories,好在Maven提供了Profile机制,能够让我们将仓库配置放在Profile中。
<profiles>
    <profile>
        <id>nexus</id>
        <!--声明一个或多个远程仓库  -->
        <repositories>
            <!-- 声明一个 Nexus 私服上的仓库  -->
            <repository>
                <!--仓库id  -->
                <id>nexus</id>
                <!-- 仓库的名称 -->
                <name>nexus</name>
                <!--仓库的地址  -->
                <url>http://localhost:8081/nexus/content/repositories/hello_central_proxy/</url>
                <!-- 是否开启该仓库的 release 版本下载支持 -->
                <releases>
                    <enabled>true</enabled>
                </releases>
                <!-- 是否开启该仓库的 snapshot 版本下载支持 -->
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
        <!-- 声明一个或多个远程插件仓库 -->
        <pluginRepositories>
            <!--声明一个 Nexus 私服上的插件仓库  -->
            <pluginRepository>
                <!--插件仓库 id -->
                <id>nexus</id>
                <!--插件仓库 名称 -->
                <name>nexus</name>
                <!-- 配置的插件仓库的地址 -->
                <url>http://localhost:8081/nexus/content/repositories/hello_central_proxy/</url>
                <!-- 是否开启该插件仓库的 release 版本下载支持 -->
                <releases>
                    <enabled>true</enabled>
                </releases>
                <!-- 是否开启该插件仓库的 snapshot 版本下载支持 -->
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>
</profiles>
<activeProfiles>
    <activeProfile>nexus</activeProfile>
</activeProfiles>

 

镜像(mirror)
  Nexus私服通常会与镜像结合使用,使Nexus成为所有远程仓库的私服(这样不仅可以从Nexus中获取所有所需构件,还能将配置集中到Nexus私服中,简化Maven本身的配置)。
  创建一个匹配任何仓库的镜像(镜像的地址为Nexus中仓库的地址),这样Maven对于任何构件的下载请求都会被拦截跳转到Nexus私服中,并从指定仓库地址中获取构件:

<!-- 所有构件请求都从nexus私服的指定仓库地址中获取,上述profile中配置的url都会失效 -->
<mirrors>
    <mirror>
        <id>nexus</id>
        <name>nexus name</name>
        <mirrorOf>*</mirrorOf>
        <url>http://localhost:8081/nexus/content/groups/hello_repository_group/</url>
    </mirror>
</mirrors>

 

二、部署构件到Nexus私服的宿主仓库中(2种方式)
===》1. 通过配置Maven项目将构件自动部署到Nexus宿主仓库
  将快照版本构件部署到Nexus中策略为Snapshot的宿主仓库中;将发布版本构件部署到Nexus中策略为Release的宿主仓库中;
步骤:
  1. 配置项目的pom.xml文件。
<project>
      ...
      <!-- 负责将指定的构件部署到Nexus指定的宿主仓库中 -->
      <distributionManagement>
        <!-- 用于定义部署Release版本构件到哪个仓库 -->
        <repository>
            <!-- 宿主仓库的唯一标识 -->
            <id>hello_Release_hosted</id>
            <!-- 宿主仓库的地址 -->
            <url>http://localhost:8081/nexus/content/repositories/hello_Release_hosted/</url>
        </repository>
        <!-- 用于定义部署Snapshot版本构件到哪个仓库 -->
        <snapshotRepository>
            <id>hello_Snapshot_hosted</id>
            <url>http://localhost:8082/nexus/content/repositories/hello_Snapshot_hosted/</url>
        </snapshotRepository>
      </distributionManagement>
    </project>
  2. 在maven安装目录/conf目录和本地仓库目录下的setting.xml中配置认证信息。
  如果不进行配置,当宿主仓库开启了部署功能时,任何人都可以连接并部署构件至这个仓库。
<settings>
      ...
      <servers>
        <server>
            <id>hello_Release_hosted</id>
            <username>admin</username>
            <password>密码</password>
        </server>
        <server>
            <id>hello_Snapshot_hosted</id>
            <username>admin</username>
            <password>密码</password>
        </server>
      </servers>
    </settings>
3. 使用mvn命令部署构件。
    mvn clean deploy
在Nexus界面的仓库列表中选中hello_Snapshot_hosted宿主仓库,在Browse Index选项卡中可以看到构件(hello-0.01-SNAPSHOT.jar)已经部署到该仓库中。

===》2. 在Nexus界面中手动上传构件
  有些 Jar 文件(如:Oracle 的 JDBC 驱动)由于许可证等原因,无法存放在公开仓库中。此外,还有一些小型的开源项目,它们没有将自己的构件分发到公共仓库中,也没有维护自己的仓库,因此这些构件是无法从公共仓库中获得的。若 Maven 项目中需要这类构件,我们就需要将构件下载到本地,然后手动上传到 Nexus 私服。
步骤
  1. 选中要上传到哪个仓库,选择Artifact Upload选项卡,其中GAV Definition(提供了2种定义构件坐标的方式)用于定义上传构件的坐标信息。
    方式1. 若该构件通过Maven构建产生的,则可以选择From POM,指定该项目的pom.xml(Nexus会自动从pom.xml文件中获取构件的坐标), 最后点击Upload Artifact(s) 按钮。
    方式2. 若该构件来自第三方(如:Oracle 的 JDBC 驱动),则只能选择GAV Parameters(手动定义构件的坐标),点击Add Artifact按钮上传该构件,最后点击Upload Artifact(s) 按钮。
  2. OK
 

标签:Nexus,私服,仓库,nexus,构件,hello
From: https://www.cnblogs.com/Fooo/p/17616933.html

相关文章

  • Windows使用Nexus搭建Maven私服
    简介Maven私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件,有了私服之后,当Maven需要下载构件时,直接请求私服,私服上存在则下载到本地仓库,否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。下载(version-2.x)官网下载页:https://www.......
  • 记一次jenkins+maven+nexus3打包中遇到的问题
    过程:开发加了个新模块使用jenkins打包,报错如下: 总结就是maven-assembly-plugin模块的jar包没拉下来。去maven服务器查看了repo包情况,/data/maven/repo/org/apache/maven/plugins/maven-assembly-plugin/3.4.2发现果然没有对应jar包等,说明没拉下来。开发说明明把包上传到nexus......
  • 11构件图与包图
    构件图:描述封装的类及其接口、端口,以及由内嵌的构件和连接件构成的内部结构。对于那些由小的构件建成的的系统来说,构件图是很重要的,构件图是类图的变体 包图是带有标签的文件夹,包将共同工作的元素放在一个文件夹。......
  • Linux+MCSM9+Docker 搭建Minecraft基岩版BDS私服,我的世界基岩版开服教程
    Debian系统使用MCSManager面板和Docker容器搭建MC基岩版服务器的教程视频教程:https://www.bilibili.com/video/BV1FZ4y1v7iK/Linux+MCSM9+Docker搭建我的世界基岩版BDS服务器,MC基岩版开服教程其他版本我的世界服务器搭建教程:https://blog.zeruns.tech/tag/mc/各种Minecraft服务端......
  • Maven仓库管理之Nexus
    [url][/url]我分两部分来介绍,首先介绍一下Maven的仓库,然后在说一下如何通过Nexus来建立我们自己的仓库,以及如何使用。[color=red][b]Maven仓库[/b][/color]在以前使用Ant的时候,我们会建立一个lib目录在存放我们的jar包,比如项目所依赖的第三方包,每建立一......
  • 35构件的标准
    三大构件标准COBRAJ2EE(EJB):会话Bean:实现业务逻辑,负责完成服务端和客户端的交互;实体Bean:实现O/R映射,简化数据库开发工作;消息驱动Bean处理并发与异常访问DNA2000   COBAR解决了什么问题:解决了远程调用服务器的问题,比如不在同一个局域网里 伺服对象(servant):COBAR对象......
  • 33构件与中间件的基本概念
    构件的定义:是一种组装单元,具有规范的接口规约和显式的语境依赖。软件构件可以被独立地部署并由第三方任意组装定义2:有价值、几乎独立并可替换的一个部分,有清晰的功能定义3:是一个独立发布的功能,可以通过接口访问服务 模块的特性:结构化开发的产物对象的特性:具有唯一标志、有状......
  • 私服资源上传与下载
    在pom中配置  点击这个可以查看仓库中的东西 点击这个发布上传 因为版本是snapshot所以发布之后也是在这个仓库里,可以修改 改成release所有都要改,包括继承与这个项目里的(不改也行,不过太乱)      ......
  • 私服仓库分类
         ......
  • 私服简介与安装
    先去官网下载自己需要的版本 打开cmd进入文件夹中,输入代码启动 出现底下这个代表启动成功 然后进入这个文件夹中,打开这个文件,里面有一串数字,复制下来,这个是登陆密码在浏览器输入localhost:8081进入网址,点击登录,把刚才复制的密码粘贴上去 重新设置密码 是否同意匿......