[#if coverImage??]
    [#if coverImage?is_hash]
        [#if coverImage.alt??]
            ${coverImage.alt}
        [/#if]
    [/#if]
[/#if]

Aujourd'hui, je vous propose la présentation d'un outil appréciable pour la gestion des dépendances Java de votre projet.

La problématique se résume à "Comment injecter une dépendance externe non disponible sur un dépôt Maven?"

Dans cette problématique, la partie "externe" implique que la dépendance n'est pas un projet, mais une librairie, et qu'elle n'est pas disponible dans les dépôts privés/internes/locaux. La partie "non disponible" fait typiquement référence à une librairie disponible sous forme de dépôt de sources, type Git (GitHub, GitLab, Bitbucket...)

Le fond de l'histoire...

L'outil s'appelle jitpack.io; c'est un proxy Maven associé à un compilateur. Il permet donc de récupérer un dépôt Git, de compiler les sources, puis de les exposer comme n'importe quel dépôt Maven.

L'outil peut aussi intégrer des dépôts Git privés, moyennant finances bien sûr.

Comment l'utiliser?

Il faut utiliser le dépôt de jitpack.io dans toute l'arborescence du projet (oui, c'est un inconvénient potentiel), puis importer la dépendance exposée par jitpack.io.

Concrètement:
On déclare le dépôt (ici en Gradle), que l'on peut déclarer directement en global:

allprojects {
    repositories {
        mavenCentral()
        mavenLocal()
        maven { url 'https://jitpack.io' }
    }
}

Ou en Maven:

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

Ensuite, pour référencer la librairie, cela se passe très classiquement, en notant:

- groupId = com.<nom_depot>.<nom_utilisateur>, par exemple: com.github.obotor

- artifactId = <nom_librarie>, par exemple: jackson-datatype-protobuf

- version = <tag>, par exemple: jackson-datatype-protobuf-0.9.4

Ce qui donne pour Gradle:

compile 'com.github.obotor:jackson-datatype-protobuf:jackson-datatype-protobuf-0.9.4'

Et voilà, done!