如何在Maven中为依赖项指定存储库

时间:2010-07-02 18:45:30

标签: maven-2 dependencies

在具有多个依赖项和存储库的项目中,Maven用于下载依赖项的try-and-error方法有点麻烦且速度慢,所以我想知道是否有任何方法可以为某些声明的依赖项设置特定的repo。 / p>

例如,我想让bouncycastle直接在http://repo2.maven.org/maven2/org/bouncycastle/检查BouncyCastle的Maven回购而不是官方Maven。

3 个答案:

答案 0 :(得分:44)

不可能。 Maven按照其声明顺序检查存储库,直到给定的工件得到解决(或不解决)。

某些存储库管理员可以做一些接近这个的事情。例如,Nexus具有routes功能,可以执行相同的操作。

答案 1 :(得分:3)

我已将图书馆从第三方存储库移到了自己的项目,并将该项目作为基础模块中的第一个模块:

base / pom.xml

222 : 4
2233 : 4
23456789 : 1
54667877 : 8
5466 : 2
7777 : 8
22 : 2
7898989899 : 26
77779999 : 64

base / thirdparty / pom.xml:

...
<modules>
    <module>thirdparty</module>
    <module>mymodule</module>
    ...
</modules>

base / mymodule / pom.xml:

...
<artifactId>thirdparty</artifactId>
<packaging>pom</packaging>

<repositories>
    <repository>
        <id>First thirdparty repository</id>
        <url>https://...</url>
    </repository>
    ...
</repositories> 

<dependencies>
    <dependency>
       <!-- Dependency from the third party repository -->
    </dependency>
    ....
</dependencies>

这将确保在根项目建立后立即将第三方存储库中的库下载到本地存储库中。对于所有其他依赖性,存储库不可见,因此在下载时不包含。

答案 2 :(得分:-1)

这篇文章可能很旧,但可能对某人有用。我在 pom.xml 中指定了两个存储库,如下所示,它工作正常。

<repositories>
        <repository>
            <id>AsposeJavaAPI</id>
            <name>Aspose Java API</name>
            <url>http://repository.aspose.com/repo/</url>
        </repository>
        <repository>
            <id>Default</id>
            <name>All apart from Aspose</name>
            <url>https://repo.maven.apache.org/maven2/</url>
        </repository>
    </repositories>