maven setting 配置仓库,pom.xml中repository不起作用

Posted 猿起缘灭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven setting 配置仓库,pom.xml中repository不起作用相关的知识,希望对你有一定的参考价值。

问题描述

最近做java项目,需要使用公司自己搭建的maven仓库,但是有些包公司的仓库中没有,导致下载失败。

项目环境

jdk:1.8

maven:3.5

问题原因分析

maven的setting文件配置信息如下:

<?xml version="1.0" encoding="UTF-8"?>
<settings>
    <localRepository>/data/repository</localRepository>
    <servers>
        <server>
            <id>releases</id>
            <username>123</username>
            <password>123</password>
        </server>
        <server>
            <id>snapshots</id>
            <username>123</username>
            <password>123</password>
        </server>
    </servers>
    <mirrors>
        <!--注意标红的部分-->
        <mirror>
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <url>http://server.dev.****.com:8000/nexus/content/groups/public/</url>
        </mirror>
    </mirrors>
    <profiles>
        <profile>
            <id>nexus</id>
            <repositories>
                <repository>
                    <id>central</id>
                    <url>http://central</url>
                    <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>true</enabled></snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>

 

pom.xml中的配置:

<repositories>
			<repository>
			<id>aliyun-repos</id>
			<url>https://maven.aliyun.com/repository/public</url>
			<releases><enabled>true</enabled></releases>
			<snapshots><enabled>false</enabled></snapshots>
		</repository>
        <repository>
		    <id>sonatype-repos-s</id>
			<name>Sonatype Repository</name>
			<url>https://oss.sonatype.org/content/repositories/snapshots</url>
			<releases><enabled>false</enabled><updatePolicy>always</updatePolicy></releases>
			<snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
		</repository>
	</repositories>

  

我需要下载的包的仓库地址在pom文件中配置了,就是 https://oss.sonatype.org/content/repositories/snapshots,这个仓库,

但是为什么下载的时候没有起作用呢?问题就出在setting中如下部分:

<mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://server.dev.****.com:8081/nexus/content/groups/public/</url>
</mirror> 

mirrorof标签,这个标签如果设置为*,就说明整个工程只能使用settings中配置的地址,这个就是问题的根源。

解决办法

  在settings文件的mirrorof标签中内容改成(!sonatype-repos-s,*),括号里面的内容,不包括括号,这样做的意思是,!sonatype-repos-s意思是sonatype-repos-s这个仓库排除在外,依然把公司的仓库作为唯一仓库,这样就可以使用settings文件中配置的仓库和pom.xml配置的仓库都生效。

 

-------------------------------------------------------------分割线---------------------------------------------------------------

番外话:上面的问题产生的根本原因是,我们平时做项目时一般都是复制粘贴,根本不知道有些配置项什么意思,出了问题就百度,但是有时百度查不到时,还是要老老实实的从原理入手。

 

以上是关于maven setting 配置仓库,pom.xml中repository不起作用的主要内容,如果未能解决你的问题,请参考以下文章

maven手动导入jar包到本地仓库

javax.sql.DataSource 这个 maven 仓库没有,怎么办

Jenkins+github+maven+git+linux

Maven setting配置镜像仓库

maven仓库

Eclipse Maven 配置setting.xml 的镜像远程仓库