Maven仓库加载顺序的实例解析

Maven仓库一般分为本地仓库和远程仓库。远程仓库又分为私服、中央仓库、中央仓库的镜像仓库。

本地仓库就是本地维护的maven仓库,仅为本机项目提供服务。

私服一般是公司或组织在局域网级别搭建的maven仓库,服务范围是公司或组织局域网内的成员。

镜像仓库,这里指的是maven中央仓库的镜像仓库。分布在全球各个地方,是maven中央仓库的镜像备份。镜像仓库的作用一是分摊中央仓库的访问压力,第二就是可以提升我们下载依赖的速度。常用的镜像仓库有阿里云镜像仓库等等。

那么在实际开发中,在配置了多个仓库的情况下,他们之间的加载访问顺序是怎么样的呢?
本地仓库 》 私服 》 镜像仓库

可以通过配置来验证一下:

pom.xml配置仓库:

 <repositories>
  <repository>
   <id>local-nexus</id>
   <url>http://xxx.xxx.xxx.135:8081/nexus/repository/maven-group-snapshots/</url>
   <releases>
    <enabled>true</enabled>
   </releases>
   <snapshots>
    <enabled>true</enabled>
   </snapshots>
  </repository>
  <repository>
   <id>ali-maven</id>
   <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
   <releases>
    <enabled>true</enabled>
   </releases>
   <snapshots>
    <enabled>true</enabled>
   </snapshots>
  </repository>
 </repositories>

setting.xml配置仓库:

   <!-- 这里配置的阿里云的镜像仓库来替代maven中央仓库 -->
  <mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>

compile一下:

...
//优先加载本地仓库
[DEBUG] Using local repository at D:\programs\apache-maven-3.6.1-bin\notify_repo
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for D:\programs\apache-maven-3.6.1-bin\notify_repo
[INFO] Scanning for projects...
//这里使用setting.xml配置的阿里云中央仓库代替maven中央仓库
[DEBUG] Using mirror alimaven (http://maven.aliyun.com/nexus/content/groups/public/) for central (https://repo.maven.apache.org/maven2).

...
...

//可以看到这是远程仓库加载的顺序,先是加载pom.xml配置的135私服,然后是ali-maven,最后才是setting.xml中的alimavn,在pom.xml中,可以通过调整<repository>的顺序来调整私服的加载顺序
[DEBUG] Repositories (dependencies):
[local-nexus (http://xxx.xxx.xxx.135:8081/nexus/repository/maven-group-snapshots/, default, releases+snapshots),
ali-maven (http://maven.aliyun.com/nexus/content/groups/public/, default, releases+snapshots),
alimaven (http://maven.aliyun.com/nexus/content/groups/public/, default, releases)]

...

这里说的、以及setting.xml中的并不能代表实际中出现的所有配置,具体加载顺序还是得看具体的项目和maven配置,这些都不是重点,重点是可以通过日志来知道实际是什么情况的。

最后,如何在idea中开启maven的debug级别日志:

到此这篇关于Maven仓库加载顺序的实例解析的文章就介绍到这了,更多相关Maven仓库加载顺序内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • maven多个plugin相同phase的执行顺序

    Maven是项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件. Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑.当你使用Maven的时候,你用一个明确定义的项目对象模

  • Maven访问仓库顺序代码实例解析

    maven项目使用的仓库一共有如下几种方式: 中央仓库,这是默认的仓库 镜像仓库,通过 sttings.xml 中的 settings.mirrors.mirror 配置 全局profile仓库,通过 settings.xml 中的 settings.repositories.repository 配置 项目仓库,通过 pom.xml 中的 project.repositories.repository 配置 项目profile仓库,通过 pom.xml 中的 project.profiles.

  • 浅谈Maven 项目中依赖的搜索顺序

    网上有很多关于maven项目中mirror.profile.repository的搜索顺序的文章,说法不一.官方文档并没有找到相关的说明,鉴于此,我抽时间做了一个验证. 依赖仓库的配置方式 maven项目使用的仓库一共有如下几种方式: 中央仓库,这是默认的仓库 镜像仓库,通过 sttings.xml 中的 settings.mirrors.mirror 配置 全局profile仓库,通过 settings.xml 中的 settings.repositories.repository 配置 项目

  • 基于maven中多个子模块的构建顺序

    目录 maven多个子模块的构建顺序 这是因为子模块的构建顺序受两个因素影响 实际的构建顺序是这样形成的 maven中的构建 1.什么是构建 2.构建过程的几个主要环节 3.自动化构建 maven多个子模块的构建顺序 在实际的项目开发中,为了更好的组织项目代码,会采用分层架构的方式,这就会使用到maven的多模块特性. 假设项目分为A.B.C.D四层,在父模块的pom.xml中,一般这样来对子模块进行聚合 <modules> <module>A</module> <

  • Maven仓库加载顺序的实例解析

    Maven仓库一般分为本地仓库和远程仓库.远程仓库又分为私服.中央仓库.中央仓库的镜像仓库. 本地仓库就是本地维护的maven仓库,仅为本机项目提供服务. 私服一般是公司或组织在局域网级别搭建的maven仓库,服务范围是公司或组织局域网内的成员. 镜像仓库,这里指的是maven中央仓库的镜像仓库.分布在全球各个地方,是maven中央仓库的镜像备份.镜像仓库的作用一是分摊中央仓库的访问压力,第二就是可以提升我们下载依赖的速度.常用的镜像仓库有阿里云镜像仓库等等. 那么在实际开发中,在配置了多个仓库

  • 使用Spring @DependsOn控制bean加载顺序的实例

    spring容器载入bean顺序是不确定的,spring框架没有约定特定顺序逻辑规范.但spring保证如果A依赖B(如beanA中有@Autowired B的变量),那么B将先于A被加载.但如果beanA不直接依赖B,我们如何让B仍先加载呢? 控制bean初始化顺序 可能有些场景中,bean A 间接依赖 bean B.如Bean B应该需要更新一些全局缓存,可能通过单例模式实现且没有在spring容器注册,bean A需要使用该缓存:因此,如果bean B没有准备好,bean A无法访问.

  • java 代码块与静态代码块加载顺序

    java 代码块与静态代码块加载顺序 public abstract class ClassLoadingTest { public static void main(String[] args) { User user3 = new User(); } } public class User { public static User user= new User("wang",18); public static void userSay(){ System.out.println(

  • 实例解析JAVA中代码的加载顺序

    Java中代码的加载顺序所能了解的知识点 类的依赖关系 static代码块的加载时间 继承类中构造器的隐式调用 非static的成员变量初始化时间 main方法和static的加载顺序 测试代码如下: public class App { private static App d = new App(); private SubClass t = new SubClass(); static{ System.out.println("App static");//6 } public

  • springboot配置文件的加载顺序解析

    这篇文章主要介绍了springboot配置文件的加载顺序解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 springboot启动时会扫描一下位置的application.properties或者application.yml文件作为默认配置文件: file:./config/ file:./ classpath:/config/ classpath:/ 以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置会覆盖低优先级配置

  • SpringBoot内部外部配置文件加载顺序解析

    内部配置加载顺序 SpringBoot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 –file:./config/ –file:./ –classpath:/config/ –classpath:/ 优先级由高到底,高优先级的配置会覆盖低优先级的配置: SpringBoot会从这四个位置全部加载主配置文件:互补配置:还可以通过spring.config.location来改变默认的配置文件位置 项

  • 关于JSP配置文件web.xml加载顺序详解

    一. 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<context-param>和<listener>两个结点. 2.紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文. 3.容器将<context-param>转换为键值对,并交给servletContext. 4.容器创建<listener>中的类实例,创建监听器. 二. load-on-startup 元

  • Java高级之虚拟机加载机制的实例讲解

    Jvm要加载的是二进制流,可以是.class文件形式,也可以是其他形式,按照它加载的标准来设计就不会有太大问题. 以下主要就机制和标准两个问题分析一番: 首先来Java类文件的加载机制 ,跟变量的加载机制类似,它先把Class文件加载入内存,再对数据进行验证.解析和初始化,最终形成虚拟机可以直接使用的Java类型.由于Java是采用JIT机制,所以加载时会比较慢,但优点也明显,具有高度灵活性,支持动态加载和动态连接. 接下来就讲讲类的加载过程: 一个类加载的基本过程是按照下面的顺序 来,但也有不

  • SpringBoot加载外部依赖过程解析

    这篇文章主要介绍了SpringBoot加载外部依赖过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 背景 公司一个项目的大数据平台进行改造,之前使用Structured Streaming作为实时计算框架,需要替换为替换为Kafka Streams,并使用SpringBoot包装,使其可以纳入微服务体系. 然而由于之前并没有接触过SpringFramework相关技术,并且项目工期较为紧张,因此只好花了2天时间看了看Spring和Spri

  • JAVA Web.xml加载顺序过程详解

    web.xml加载过程(步骤): 1.启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param> 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文. 3.容器将<context-param></context-param>转化为键值对,

随机推荐