maven配置多个镜像

问题场景

1、国内访问maven默认远程中央镜像特别慢

2、用阿里的镜像替代远程中央镜像

3、大部分jar包都可以在阿里镜像中找到,部分jar包在阿里镜像中没有,需要单独配置镜像

 

解决方案

1:在全局配置文件setting.xml,只能配置一个中央仓库的镜像,即mirrorOf为central的镜像只配置一个

2:在具体项目的pom.xml文件里配置特殊的仓库



    
        ssm-parent
        cn.itcast
        1.0-SNAPSHOT
        ../ssm-parent/pom.xml
    
    4.0.0
 
    cn.itcast
    ssm-crm
    1.0-SNAPSHOT
    war
 
    ssm-crm Maven Webapp
    
    http://www.example.com
 
    
        UTF-8
        1.7
        1.7
    
 
    
        
        
            nexus-163
            Nexus 163
            http://mirrors.163.com/maven/repository/maven-public/
            default
            
                false
            
            
                true
            
        
    
 
 
    
        
            junit
            junit
            4.11
            test
        
        
            org.apache.taglibs
            taglibs-standard-spec
            1.2.5
        
        
            org.apache.taglibs
            taglibs-standard-impl
            1.2.5
        
    
   

在Maven配置文件中配置:

在setting.xml文件中  中配置不同的 

    
	
	     alimaven
	     aliyun maven
	     https://maven.aliyun.com/repository/central
	     central
    
	
	
	
		central
		Maven Repository Switchboard
		https://repo1.maven.org/maven2/
		central
	


	
	
		repo2
		Mirror from Maven Repo2
		http://repo2.maven.org/maven2/
		central
	
	

	
	
		jboss-public-repository-group
		central
		JBoss Public Repository Group
		https://repository.jboss.org/nexus/content/groups/public/
	
	

其中:id是唯一标识一个mirror,name节点名,url是官方的库地址,mirrorOf代表了一个镜像的替代位置,例如central就表示代替官方的中央库

虽然mirrors可以配置多个子节点,但是它只会使用其中的一个节点,即默认情况下配置多个mirror的情况下,只有第一个生效只有当前一个mirror无法连接的时候,才会去找后一个;而我们想要的效果是:当a.jar在第一个mirror中不存在的时候,maven会去第二个mirror中查询下载,但是maven不会这样做!

注意:

   配置多个mirror时,mirrorOf不能配置" * "," * " 的意思就是(根据mirrorOf和repository的id)匹配所有的仓库(repository),这样就是说如果你需要某个jar,他会从镜像地址去下载这个jar。不管你配置了多少个库,即使这些库的地址不一样,仍然会从镜像地址访问

 

阿里云常用Maven仓库:https://maven.aliyun.com/mvn/view

你可能感兴趣的:(项目构建)