Как указать хранилище для зависимости в Maven - PullRequest
59 голосов
/ 02 июля 2010

В проектах с несколькими зависимостями и репозиториями подход Maven к загрузке зависимостей методом проб и ошибок является немного громоздким и медленным, поэтому мне было интересно, есть ли способ установить конкретное хранилище для некоторых объявленных зависимостей.

Например, я хочу, чтобы bouncycastle проверял непосредственно репозиторий Maven BouncyCastle на http://repo2.maven.org/maven2/org/bouncycastle/ вместо официального Maven.

Ответы [ 2 ]

44 голосов
/ 03 июля 2010

Не возможно. Maven проверяет репозитории в порядке их декларации, пока данный артефакт не будет разрешен (или нет).

Некоторые менеджеры хранилищ могут сделать что-то похожее на это. Например, в Nexus есть функция маршрутов , которая делает что-то эквивалентное.

4 голосов
/ 19 ноября 2018

Я переместил библиотеки из сторонних репозиториев в их собственный проект и включил этот проект в качестве первого модуля в свой базовый проект:

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>

Thisбудет гарантировать, что библиотеки из стороннего репозитория будут загружены в локальный репозиторий, как только будет создан корневой проект.Для всех других зависимостей хранилища не видны и поэтому не включаются при загрузке.

...