首页 > 其他分享 >Maven配置单仓库与多仓库的实现(Nexus)

Maven配置单仓库与多仓库的实现(Nexus)

时间:2024-08-15 15:55:11浏览次数:10  
标签:maven 仓库 Nexus Maven url mirror mirrorOf id

Maven配置单仓库与多仓库的实现(Nexus)

更新时间:2023年01月16日 10:14:56   作者:我认不到你  本文主要介绍了Maven配置单仓库与多仓库的实现(Nexus),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Java技术迷

+
目录

单仓库

当只配置一个仓库时,操作比较简单,直接在Maven的settings.xml文件中进行全局配置即可,以阿里云的镜像为例:

1 2 3 4 5 6 7 8 <mirrors>     <mirror>         <id>alimaven</id>         <name>aliyun maven</name>         <url>http://maven.aliyun.com/nexus/content/groups/public/</url>         <mirrorOf>central</mirrorOf>     </mirror> </mirrors>

只用新增一个mirror配置即可。要做到单一仓库,设置mirrorOf到*。

mirrorOf中配置的星号,表示匹配所有的artifacts,也就是everything使用这里的代理地址。上面的mirrorOf配置了具体的名字,指的是repository的名字。

镜像配置说明:

1、id: 镜像的唯一标识;

2、name: 名称描述;

3、url: 地址;

4、mirrorOf: 指定镜像规则,什么情况下从镜像仓库拉取。其中, *: 匹配所有,所有内容都从镜像拉取;

external:*: 除了本地缓存的所有从镜像仓库拉取;

repo,repo1: repo或者repo1,这里的repo指的仓库ID;

*,!repo1: 除了repo1的所有仓库;

多仓库

先看看我的settings配置文件

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 <?xml version="1.0" encoding="UTF-8"?>   <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">     <localRepository>D:\idea\Maven\apache-maven-3.8.4\maven-repo</localRepository>     <pluginGroups>     </pluginGroups>     <proxies>     </proxies>     <!-- 私服信息   -->     <servers>     <server>       <id>kd-nexus</id>       <username>账号</username>       <password>密码</password>     </server>   <server>       <id>nexus</id>       <username>账号</username>       <password>密码</password>     </server>     </servers>     <!--  仓库信息  -->     <mirrors>     <mirror>         <!--  与上面的id对应  -->       <id>kd-nexus</id>       <mirrorOf>*</mirrorOf>       <name>kd-nexus maven</name>       <url>http://ip:8081/repository/maven-public/</url>     </mirror>     <mirror>         <!--  与上面的id对应  -->       <id>nexus</id>       <mirrorOf>*</mirrorOf>       <name>nexus maven</name>       <url>http://ip:8081/repository/maven-public/</url>     </mirror>     <mirror>       <id>alimaven</id>       <mirrorOf>central</mirrorOf>       <name>aliyun maven</name>       <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>     </mirror>   </mirrors>     <!--  项目配置文件信息  -->     <profiles>         <profile>             <id>jdk-1.8</id>             <activation>                 <activeByDefault>true</activeByDefault>                 <jdk>1.8</jdk>             </activation>             <properties>                 <maven.compiler.source>1.8</maven.compiler.source>                 <maven.compiler.target>1.8</maven.compiler.target>                 <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>             </properties>         </profile>     </profiles>     <!--  启动那个配置  -->     <activeProfiles>         <activeProfile>jdk-1.8</activeProfile>     </activeProfiles> </settings>

刚开始我以为这样就可以了,如果在kd-nexus找不到jar包,会自动去nexus里面找jar包,可现实是maven只会在kd-nexus中找,找不到就报错,根本不会在之后的仓库中取寻找 因为:

虽然mirrors可以配置多个子节点,但是它只会使用其中的一个节点,即**默认情况下配置多个mirror的情况下,只有第一个生效,**只有当前一个mirror

无法连接的时候,才会去找后一个;而我们想要的效果是:当a.jar在第一个mirror中不存在的时候,maven会去第二个mirror中查询下载,但是maven不会这样做!

多仓库配置

那么针对多仓库的配置是否再多配置几个mirror就可以了?如此配置并不会生效。

正确的操作是在profiles节点下配置多个profile,而且配置之后要激活。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 <profiles>     <profile>       <id>boundlessgeo</id>       <repositories>         <repository>           <id>boundlessgeo</id>           <url>https://repo.boundlessgeo.com/main/</url>           <releases>             <enabled>true</enabled>           </releases>           <snapshots>             <enabled>true</enabled>             <updatePolicy>always</updatePolicy>           </snapshots>         </repository>       </repositories>     </profile>     <profile>       <id>aliyun</id>       <repositories>         <repository>           <id>aliyun</id>           <url>http://maven.aliyun.com/nexus/content/groups/public/</url>           <releases>             <enabled>true</enabled>           </releases>           <snapshots>             <enabled>true</enabled>             <updatePolicy>always</updatePolicy>           </snapshots>         </repository>       </repositories>     </profile>     <profile>       <id>maven-central</id>       <repositories>         <repository>           <id>maven-central</id>           <url>http://central.maven.org/maven2/</url>           <releases>             <enabled>true</enabled>           </releases>           <snapshots>             <enabled>true</enabled>             <updatePolicy>always</updatePolicy>           </snapshots>         </repository>       </repositories>     </profile> <profiles>

通过配置activeProfiles子节点激活:

1 2 3 4 5 <activeProfiles>     <activeProfile>boundlessgeo</activeProfile>     <activeProfile>aliyun</activeProfile>     <activeProfile>maven-central</activeProfile> </activeProfiles>

打包时,勾选所使用的profile即可。如果使用Maven命令打包执行命令格式如下:

1 mvn -Paliyun ...

1.如果aliyun仓库的id设置为central,则会覆盖maven里默认的远程仓库。

2.aliyun的仓库也可以不用配置,直接在mirrors标签内配置一个镜像仓库,mirrors镜像仓库mirrorOf的值设置为central,则也可以实现覆盖默认的仓库。

好了你既然看到这里了,那么上诉可能基本没效果,问就是我导包也没成功,现提供两个解决方案

前提

idea每次修改完settings之后,需要重新点击一下,更新一下文件配置

一、挨个导包

首先kd-nexus先导一下包

1 2 3 4 5 6 7 8 9 10 11 12 13 14   <mirrors>   <mirror>     <id>kd-nexus</id>     <mirrorOf>*</mirrorOf>     <name>kd-nexus maven</name>     <url>http://ip:8081/repository/maven-public/</url>   </mirror>   <mirror>     <id>nexus</id>     <mirrorOf>*</mirrorOf>     <name>nexus maven</name>     <url>http://ip:8081/repository/maven-public/</url>   </mirror> </mirrors>

之后修改maven配置,导一下nexus的包

1 2 3 4 5 6 7 8 9 10 11 12 13 14   <mirrors>   <mirror>     <id>nexus</id>     <mirrorOf>*</mirrorOf>     <name>nexus maven</name>     <url>http://ip:8081/repository/maven-public/</url>   </mirror>   <mirror>     <id>kd-nexus</id>     <mirrorOf>*</mirrorOf>     <name>kd-nexus maven</name>     <url>http://ip:8081/repository/maven-public/</url>   </mirror> </mirrors>

二、手动导包(解决一切导包问题,就是过程很麻烦)

本地maven仓库:如果连这个都不清楚,看nexus完全没意义

1 2 就是localRepository标签中的文件地址 <localRepository>D:\idea\Maven\apache-maven-3.8.4\maven-repo</localRepository>

不知道Nexus怎么搭建的家人们,可以看一下这篇文章:使用Nexus搭建Maven私服教程(附:nexus上传、下载教程)

到此这篇关于Maven配置单仓库与多仓库的实现(Nexus)的文章就介绍到这了,更多相关Maven











标签:maven,仓库,Nexus,Maven,url,mirror,mirrorOf,id
From: https://www.cnblogs.com/ios9/p/18361129

相关文章

  • Maven私服仓库Nexus配置小结
    技术前提:熟练的掌握Maven基础知识一、什么是Maven私服?Maven私服是一种特殊的Maven远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)。当然也并不是说私服只能建立在局域网,也有很多公司会直接把私服部署到公网,具体还是得看公司业......
  • nexus安装及配置图文教程
    nexus安装及配置图文教程更新时间:2021年05月28日14:49:24  作者:我的宠物-王小兔 Nexus是Maven仓库管理器,通过nexus可以搭建maven仓库,同时nexus还提供强大的仓库管理功能,构件搜索功能等,文中有非常详细的图文介绍,对小伙伴们很有帮助,需要的朋友可以参考下+目......
  • IDEA中maven配置忽略SSL检查
     当使用mvn打包时,会报错:PKIXpathbuildingfailed:sun.security.provider.certpath.SunCertPathBuilderException:unabletofindvalidcertificationpathtorequestedtarget->[Help1]问题原因是没有导入中心仓域名的证书,ssl证书校验不通过,就会报错误。此时有两种......
  • 构建实时数据仓库:流式处理与实时计算技术解析
    目录一、流式处理请求与响应批处理二、实时计算三、Lambda架构Lambda架构的缺点四、Kappa架构五、实时数据仓库解决方案近年来随着业务领域的不断拓展,尤其像互联网、无线终端APP等行业应用的激增,产生的数据量呈指数级增长,对海量数据的处理需求也提出了新的挑战。具......
  • maven dependencyManagement
    1.简介:本文介绍maven的dependencyManagement的用法。2.使用场景:dependencyManagement只声明依赖,但不引入依赖。一般定义在父pom中,这样子pom项目引入依赖时,不必指定版本号。比如SpringBoot就使用了dependencyManagement,它对里面的包进行了与SpringBoot对应版本的兼容性测试......
  • 介绍Docker仓库
    仓库(Repository)是集中存放镜像的地方。一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址dl.dockerpool.com......
  • maven command
     mavensettings.xml文件,server配置public、thirdparty、releases、snapshots、archetype作用? 在Maven的settings.xml文件中,server配置主要用于定义Maven在构建和发布项目时所需的认证信息和相关的服务器配置。下面是public、thirdparty、......
  • maven仓库下载不下来的包如何自己安装(本地宝导入到maven仓库)
    1.下载jar包https://mvnrepository.com/在官网上搜索jar包,点击下载2.将jar包放在一个没有中文的路径下(我放在了D盘根路径下)打开CMD框执行下面的命令mvninstall:install-file-Dfile=D:\kingbase8-8.6.0.jar-DgroupId=com.kingbase-DartifactId=kingbase8-Dversion=8......
  • centos7配置yum源 安装 docker 安装Docker Compose 安装Python 3.7并汉化 (python可不
    安装一个软件确认无误就执行备份,在关键步骤之前一定做好备份以防止重来,造成时间的大量浪费注意有时因各自网络环境原因,wget显示拒绝连接,要么等五分钟再试要么就把网址粘贴到百度去下载相对应的安装包,通过ftp,xftp等拷贝到虚拟机中。若有问题欢迎评论留言,我会尝试解决。现......
  • 【计算机毕设选题推荐】基于SpringBoot的springboot仓库点单小程序
    前言:我是天码编程,从事计算机开发行业数年,专注Java程序设计开发、源码分享、技术指导和毕业设计,欢迎各位前来交流讨论......