104 votes

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

Dans les projets comportant plusieurs dépendances et dépôts, l'approche par essais et erreurs de Maven pour télécharger les dépendances est un peu lourde et lente. Je me demandais donc s'il existait un moyen de définir un dépôt spécifique pour certaines dépendances déclarées.

Par exemple, je souhaite que bouncycastle vérifie directement le dépôt Maven de BouncyCastle à l'adresse suivante http://repo2.maven.org/maven2/org/bouncycastle/ au lieu de la version officielle de Maven.

60voto

Pascal Thivent Points 295221

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

Un gestionnaire de référentiel peut cependant faire quelque chose qui s'en approche. Par exemple, Nexus a un itinéraires qui fait quelque chose d'équivalent.

1 votes

Merci. J'étais sûr que ce n'était pas possible mais je voulais avoir l'avis d'autres utilisateurs de Maven. J'ai juste réduit les dépôts définis et créé un dépôt local.

14 votes

Ce serait un bon ajout à Maven, et je l'ai demandé. Elle permettrait à Maven de fonctionner dans le monde de Github.

2 votes

Depuis janvier 2019, cela est désormais possible dans Gradle (bien que je ne l'ai pas encore essayé). Voir stackoverflow.com/a/54465569

28voto

Tobias Liefke Points 5577

J'ai déplacé les bibliothèques des dépôts 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/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>

Ainsi, les bibliothèques du dépôt tiers seront téléchargées dans le dépôt local dès que le projet Root sera construit. Pour toutes les autres dépendances, les dépôts ne sont pas visibles et ne sont donc pas inclus lors du téléchargement.

-1voto

Hari Rao Points 456

Cet article est peut-être très ancien, mais il pourrait être utile à quelqu'un. J'ai spécifié les deux dépôts dans pom.xml comme ci-dessous et cela a fonctionné.

<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>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X