在具有多个依赖项和存储库的项目中,Maven用于下载依赖项的“试错法”有点麻烦且缓慢,因此我想知道是否有任何方法可以为某些已声明的依赖项设置特定的存储库。
例如,我想让bouncycastle直接在http://repo2.maven.org/maven2/org/bouncycastle/上查看BouncyCastle的Maven存储库,而不是官方Maven。
在具有多个依赖项和存储库的项目中,Maven用于下载依赖项的“试错法”有点麻烦且缓慢,因此我想知道是否有任何方法可以为某些已声明的依赖项设置特定的存储库。
例如,我想让bouncycastle直接在http://repo2.maven.org/maven2/org/bouncycastle/上查看BouncyCastle的Maven存储库,而不是官方Maven。
Answers:
不可能。Maven按照声明顺序检查存储库,直到(或不解决)给定的工件为止。
一些存储库管理器可以做一些接近此的事情。例如,Nexus的路由功能可以完成某些功能。
我已将库从第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>
这将确保在根项目建立后立即将第三方存储库中的库下载到本地存储库中。对于所有其他依赖性,存储库不可见,因此在下载时不包含。