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


74

在具有多个依赖项和存储库的项目中,Maven用于下载依赖项的“试错法”有点麻烦且缓慢,因此我想知道是否有任何方法可以为某些已声明的依赖项设置特定的存储库。

例如,我想让bouncycastle直接在http://repo2.maven.org/maven2/org/bouncycastle/上查看BouncyCastle的Maven存储库,而不是官方Maven。

Answers:


49

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

一些存储库管理器可以做一些接近此的事情。例如,Nexus的路由功能可以完成某些功能。


1
谢谢!我确定这是不可能的,但我想向其他Maven用户了解。我只是减少了定义的存储库并创建了一个本地存储库。
DarioCastañé2010年

11
这将是对Maven的一个很好的补充,我已经提出了要求。这将使Maven能够在github世界中工作。
2014年

从2019年1月开始,现在可以在Gradle中实现此功能(尽管我尚未尝试过)。参见stackoverflow.com/a/54465569
Net Wolf

14

我已将库从第3方存储库移至其自己的项目,并将该项目作为基础模块的第一个模块包括在内:

base / pom.xml

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

base / thirdparty / 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>

base / mymodule / pom.xml:

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>thirdparty</artifactId>
        <version>${project.version}</version>
        <type>pom</type>
    </dependency>
    ...
</dependencies>

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.