转载

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配置的仓库都生效。

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

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

原文  http://www.cnblogs.com/gunduzi/p/11715726.html
正文到此结束
Loading...