mercredi 14 mai 2014

Comment utiliser Bintray pour déployer vos artefacts Maven et les partager

Avant de vous présenter comment configurer votre projet Maven afin de profiter de cette plateforme, une rapide présentation ...


Qu'est ce que c'est que Bintray ?

Créée par JFrog  actuel éditeur d'Artifactory, Bintray est une plateforme sociale pour le stockage et la distribution des binaires de vos projets. Ce SaaS, libre et gratuit, vous met à disposition vos propres repositories pour les principales technologies utilisées aujourd'hui : Maven, Debian, RPM et un repository générique. Vous pouvez donc fournir vos logiciels et libraires, liés à une licence Open-source, via Maven, Gradle, Yum, Apt ou par un download classique.

Cette plateforme est qualifée de sociale car elle fournit un espace d'échange autour de votre projet, à travers des notions de crédits, de feedbacks des utilisateurs. Elle s'intègre avec Twitter et Github.

Parmis les utilisateurs de Bintray, vous trouverez entre autres : Spring, Vert.X, Jenkins, Netty, Joda-time ...

A terme (si ce n'est pas déjà le cas), Bintray va devenir la plateforme de distribution incontournable tout comme l'est devenue GitHub pour les sources.

Les + de Bintray : Statistiques, Social ....

    • La publication des binaires est extrêmement simple
    • Feedbacks, Interactions, popularité et votes sur les binaires
    • Accès aux infos des "publishers" (compte Twitter, Github, G+, site web ...)
    • Notification de nouvelles releases (notamment via Twitter)
    • Gestion des notes de release (importables depuis Github)
    • Intégration avec Maven, Gradle, Yum et Apt
    • Recherche full-text pour trouver vos binaires
    • Statistiques quasi temps-réel
    • Les binaires sont disponibles à travers un CDN
    • Aide à la visibilité de vos projets :
      • Création de liens de téléchargement sous forme de snippets (badge, markdown, html ou Asciidoc)
      • Création de liens de notifications pour augmenter vos "watchers"

Comment déployer un artefact sur votre repository Maven ?


  • La première chose à faire c'est de se créer un compte, donc rendez-vous ici.
  • Vous avez maintenant vos repositories de prêts 
  • Cliquez sur le repo Maven.
    Bintray décompose votre repository en "package". Vous devez donc en créer au moins un pour pouvoir déployer vos artefacts.
  • Ensuite, déclarez le serveur dans votre fichier .settings de Maven en ajoutant la rubrique suivante :

<server>    <id>bintray-{user_name}-maven-{package_name}</id>    <username>{user_name}</username>    <password>{api_key}</password></server> 

l'api_key est disponible en consultant votre  profil.



  • Je vous passe la config proprement liée à l'utilisation du plugin release de maven.
  • Ajouter la référence à votre nouveau repo de déploiement dans le pom.xml
<distributionManagement>
<repository>
<id>bintray-{user_name}-maven-{package_name}</id>
<name>{user_name}-maven-{package_name}</name>
<url>https://api.bintray.com/maven/{user_name}/maven/{package_name}</url>
</repository>
</distributionManagement>

  • Et voilà, that's all. Dès le déploiement de votre artefact vous pourrez le voir apparaitre sur votre espace.

Comment déclarer la dépendance vers votre artefact au sein d'un projet ?


  • Une fois déployé, votre artefact sera disponible en ajoutant la déclaration du repository dans le pom xml.

<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>bintray</name>
<url>http://dl.bintray.com/{user_name}/maven</url>
</repository>
</repositories>


Et Maven Central là-dedans ?

J'aime bien le début de ce post sur le blog de Bintray : Que cela signifie-t'il quand un outil ou un framework dispose de dizaines de guides ? Probablement qu'il soit populaire, ou qu'il soit compliqué à utiliser. Souvent les deux. C'est le cas de Maven Central

Pour ceux qui ont essayé, déployer sur Maven Central n'est pas vraiment la chose la plus aisée qui soit.

Bintray vous permet de lier votre package à JCenter. Une fois lié, vous n'aurez plus qu'à lancer une synchronisation et le tour sera joué !

Parce qu'il est dommage de paraphraser un article, je préfère vous rediriger vers ce post qui décrit parfaitement comment configurer cette synchronisation pas à pas.