web-dev-qa-db-fra.com

Comment spécifier un référentiel pour une dépendance dans Maven

Dans les projets avec plusieurs dépendances et référentiels, l'approche par essais et erreurs de Maven pour le téléchargement des dépendances est un peu lourde et lente, donc je me demandais s'il y avait un moyen de définir un dépôt spécifique pour certaines dépendances déclarées.

Par exemple, je veux que bouncycastle vérifie directement le repo Maven de BouncyCastle sur http://repo2.maven.org/maven2/org/bouncycastle/ au lieu de Maven officiel.

60
Dario Castañé

Pas possible. Maven vérifie les référentiels dans leur ordre de déclaration jusqu'à ce qu'un artefact donné soit résolu (ou non).

Cependant, certains gestionnaires de référentiels peuvent faire quelque chose pour cela. Par exemple, Nexus a une fonction routes qui fait quelque chose d'équivalent.

45
Pascal Thivent

J'ai déplacé des bibliothèques de référentiels tiers vers leur propre projet et inclus ce projet comme premier module dans mon projet de base:

base/pom.xml

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

base/tierce partie/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>

Cela garantira que les bibliothèques du référentiel tiers sont téléchargées dans le référentiel local dès que le projet racine est créé. Pour toutes les autres dépendances, les référentiels ne sont pas visibles et ne sont donc pas inclus lors du téléchargement.

6
Tobias Liefke