在具有多个镜像的Maven项目上使用依赖项下载时出错

时间:2012-02-17 19:49:35

标签: maven maven-2

当我尝试使用Maven构建项目时,我遇到了问题。我的网络上有一个nexus服务器,所有的依赖都来自那里。它有一个中央存储库,它是外部依赖项的官方maven2存储库的代理,以及一个存储所有内部库的存储库。

好吧,让我们跳到这个问题。我的.m2文件夹中有以下配置:

<settings>
    <mirrors>
        <mirror>
            <id>treto</id>
            <name>Tre-to Libs</name>
            <url>http://10.163.40.41:8081/nexus/content/repositories/treto-libs/</url>
            <mirrorOf>treto-libs,br.jus.treto</mirrorOf>
        </mirror>
        <mirror>
            <id>central</id>
            <name>Maven Repository Manager</name>
            <url>http://10.163.40.41:8081/nexus/content/repositories/central/</url>
            <mirrorOf>central,!treto-libs,!br.jus.treto</mirrorOf>
        </mirror>
    </mirrors>
     ...
 </settings>

在我的项目的pom上,我有以下依赖项,我从nexus接口复制的代码:

<dependencies>
    <dependency>
        <groupId>br.jus.treto</groupId>
        <artifactId>tre-auth</artifactId>
        <version>0.120</version>
    </dependency>
</dependencies>

这个依赖项应该从“treto”镜像下载,但是Maven总是试图从没有那种依赖性的中央镜像中获取它。

问题是,我在配置上缺少什么?

2 个答案:

答案 0 :(得分:1)

你应该在你的pom.xml或settings.xml(在一个配置文件中)中有这种声明:

<repositories>
    <repository>
         <id>central</id>
         <url>http://repo1.maven.org/maven2/</url>
    </repository>
    <repository>
        <id>treto</id>
        <name>Tre-to Libs</name>
        <url>http://10.163.40.41:8081/nexus/content/repositories/treto-libs/</url>
    </repository>
</repositories>

然后,你的镜子应该是:

<mirrors>
    <mirror>
       <id>central</id>
       <name>Maven Repository Manager</name>
       <url>http://10.163.40.41:8081/nexus/content/repositories/central/</url>
       <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>

你可以告诉maven使用你的镜子除了treto之外的所有东西:

<mirrorOf>*,!treto</mirrorOf>

或仅将其用于中央

<mirrorOf>central</mirrorOf>

如果这不起作用,请发布完整的pom和设置;);)

答案 1 :(得分:0)

是否在您的项目或设置中声明了具有ID(treto-libs,br.jus.treto)的存储库? 因为你说mirror必须声明那些id。