toursjug - anniversaire 2016

50

Upload: francois-robert

Post on 08-Apr-2017

383 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: ToursJUG - Anniversaire 2016
Page 2: ToursJUG - Anniversaire 2016
Page 3: ToursJUG - Anniversaire 2016
Page 4: ToursJUG - Anniversaire 2016

Publier sur un repo central

Page 5: ToursJUG - Anniversaire 2016

/** * @author François Robert */public class PtitbobAtToursJug { public static void main(String... args) { System.out.println("Hello everybody"); } public Twitter getTwitter() { return new Twitter("@ptitbob"); } public URL getGithub() throws MalformedURLException { return new URL("github.com/ptitbob"); }}

Page 6: ToursJUG - Anniversaire 2016

Pourquoi ?

Lib qui n’existe pas

Idée du siècle

Plugin maven

complexe Iznogoud

Page 7: ToursJUG - Anniversaire 2016

Lib qui n’existe pas

Swagger UI+Swagger

= Swagger-UI-Integration@SwaggerUIConfigurationpublic class ApplicationConfiguration {}

Page 8: ToursJUG - Anniversaire 2016
Page 9: ToursJUG - Anniversaire 2016
Page 10: ToursJUG - Anniversaire 2016
Page 11: ToursJUG - Anniversaire 2016

• Coordonnées• Description du projet• La signature• La licence• Le(s) développeur(s)• Informations de repo de source

Page 12: ToursJUG - Anniversaire 2016

Ce qu’il ne faut pas faire

• Intégrer un repository (autres que défaut)

• Intégrer des lib non libre

• Lib ayant une licence moins permissive

Page 13: ToursJUG - Anniversaire 2016

• Coordonnées• Description du projet• La signature• La licence• Le(s) développeur(s)• Informations de repo de source

Page 14: ToursJUG - Anniversaire 2016

<groupId>org.shipstone</groupId> <artifactId>swagger-ui-integration</artifactId> <version>1.0</version>

Coordonnées du projet

Sour

ces Javadoc

Page 15: ToursJUG - Anniversaire 2016

Coordonnées == choix du nom de package de base

Nom de domaine

domain.fr

fr.domain……

Page 16: ToursJUG - Anniversaire 2016

Coordonnées == choix du nom de package de base

Repo github

com.github.ptitbob

Page 17: ToursJUG - Anniversaire 2016

• Coordonnées• Description du projet• La signature• La licence• Le(s) développeur(s)• Informations de repo de source

Page 18: ToursJUG - Anniversaire 2016

Descriptif du projet

<url>https://github.com/ptitbob/swagger-ui-integration</url> <name>swagger-ui-integration</name> <description>Swagger core and UI integration effortless for JavaEE application</description>

Page 19: ToursJUG - Anniversaire 2016

• Coordonnées• Description du projet• La signature• La licence• Le(s) développeur(s)• Informations de repo de source

Page 20: ToursJUG - Anniversaire 2016

Disposer d’une clé PGP

Installation de gnupg2

Générer une clé

Enregistrer la clé publiquehttp://pgp.mit.edu

gpg2 --gen-key

Page 21: ToursJUG - Anniversaire 2016

Signature des jars<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.6</version> <configuration> </configuration> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin>

-rw-r--r--+ 1 francois staff 885K 22 mar 00:24 swagger-ui-integration-1.0-javadoc.jar

-rw-r--r--+ 1 francois staff 885K 22 mar 00:24 swagger-ui-integration-1.0-javadoc.jar.asc

-rw-r--r--+ 1 francois staff 20K 22 mar 00:24 swagger-ui-integration-1.0-sources.jar

-rw-r--r--+ 1 francois staff 20K 22 mar 00:24 swagger-ui-integration-1.0-sources.jar.asc

-rw-r--r--+ 1 francois staff 805K 22 mar 00:24 swagger-ui-integration-1.0.jar

-rw-r--r--+ 1 francois staff 473B 22 mar 00:24 swagger-ui-integration-1.0.jar.asc

-rw-r--r--+ 1 francois staff 11K 22 mar 00:24 swagger-ui-integration-1.0.pom

-rw-r--r--+ 1 francois staff 473B 22 mar 00:24 swagger-ui-integration-1.0.pom.asc

Page 22: ToursJUG - Anniversaire 2016

Ne mettez pas votrepassphrase

dans le pom !!!

Page 23: ToursJUG - Anniversaire 2016

Préférez settings.xml <profiles> <profile> <id>ossrh</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <gpg.executable>gpg2</gpg.executable> <gpg.passphrase>MaSuperPhraseCodée</gpg.passphrase> <gpg.keyname>Clé.Publique</gpg.keyname> </properties> </profile> </profiles>

Page 24: ToursJUG - Anniversaire 2016

• Coordonnées• Description du projet• La signature• La licence• Le(s) développeur(s)• Informations de repo de source

Page 25: ToursJUG - Anniversaire 2016

Licence ?

Laquelle ?!!!!

Page 26: ToursJUG - Anniversaire 2016
Page 27: ToursJUG - Anniversaire 2016

LGPLLicence publique générale limitée GNU

<licenses> <license> <name>GNU LESSER GENERAL PUBLIC LICENSE version 3</name> <url>http://www.gnu.org/licenses/lgpl-3.0.fr.html</url> </license> </licenses>

Page 28: ToursJUG - Anniversaire 2016

• Coordonnées• Description du projet• La signature• La licence• Le(s) développeur(s)• Informations de repo de source

Page 29: ToursJUG - Anniversaire 2016

<developers> <developer> <name>Francois Robert</name> <email>[email protected]</email> <url>http://www.shipstone.org</url> <timezone>Europe/Paris</timezone> <roles> <role>Developer</role> </roles> </developer> </developers>

Le(s) développeur(s)Utilisé pour la signature

Page 30: ToursJUG - Anniversaire 2016

• Coordonnées• Description du projet• La signature• La licence• Le(s) développeur(s)• Informations de repo de source

Page 31: ToursJUG - Anniversaire 2016

Repo de source….

<scm> <url>https://github.com/ptitbob/swagger-ui-integration</url> <connection>scm:git:[email protected]:ptitbob/swagger-ui-integration.git</connection> <developerConnection>scm:git:[email protected]:ptitbob/swagger-ui-integration.git</developerConnection> </scm>

Page 32: ToursJUG - Anniversaire 2016

Demande de publication

http://issues.sonatype.org

Open Source Software Repository Hosting (OSSRH)

Page 33: ToursJUG - Anniversaire 2016

Demande de publication

Il en existe d’autres

• Apache Software Foundation (for all Apache projects) • FuseSource Forge (focused on FUSE related projects) • nuiton.org • …

Page 34: ToursJUG - Anniversaire 2016

Créez vous un compte

Création de demande

Demande de publication

Page 35: ToursJUG - Anniversaire 2016

Demande de publicationCommunity Support - Open Source Project Repository Hosting (OSSRH)

Nouveau projet

Le projet en une phrase

Courte description

Page 36: ToursJUG - Anniversaire 2016

Demande de publication

Le groupId choisi

Site de description ou lien vers le README

L’URL (github ou bitbucket)

Login Sonatype

Page 37: ToursJUG - Anniversaire 2016

Demande de publication

Demande déposée le 05/03

Page 38: ToursJUG - Anniversaire 2016

Demande de publication… 2 jours plus tard :

Page 39: ToursJUG - Anniversaire 2016

Demande de publication

<distributionManagement> <snapshotRepository> <id>ossrh</id> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </snapshotRepository> <repository> <id>ossrh</id> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> </repository> </distributionManagement>

Repo de vérification avant publication

Intégration des repository dédiés

Page 40: ToursJUG - Anniversaire 2016

Configuration de la release

Utilisation du plugin Release

Utilisation du plugin Nexus

Page 41: ToursJUG - Anniversaire 2016

Configuration de la releaseUtilisation du plugin Release

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.5.3</version> <configuration> <tagNameFormat>v@{project.version}</tagNameFormat> <autoVersionSubmodules>true</autoVersionSubmodules> <useReleaseProfile>false</useReleaseProfile> <releaseProfiles>release</releaseProfiles> <goals>deploy</goals> </configuration> </plugin>

Page 42: ToursJUG - Anniversaire 2016

Configuration de la releaseUtilisation du plugin Release

mvn clean install release:clean release:prepare

Création d’un tag de version

Page 43: ToursJUG - Anniversaire 2016

Configuration de la releaseUn petit plus…

Page 44: ToursJUG - Anniversaire 2016

Utilisation du plugin Nexus<plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> <version>1.6.3</version> <extensions>true</extensions> <configuration> <serverId>ossrh</serverId> <nexusUrl>https://oss.sonatype.org/</nexusUrl> <autoReleaseAfterClose>true</autoReleaseAfterClose> </configuration> </plugin> <servers>

<server>

<id>ossrh</id>

<username>ptitbob</username>

<password>[password]</password>

</server>

</servers>

pom.xmlsettings.xml

Configuration de la release

Page 45: ToursJUG - Anniversaire 2016

Publication de la releaseEn 2 temps

mvn clean install release:clean release:prepare1

mvn -Prelease clean install gpg:sign nexus-staging:deploy

2

Se placer dans le tag généré

Page 46: ToursJUG - Anniversaire 2016
Page 47: ToursJUG - Anniversaire 2016

Publication de la release

Page 48: ToursJUG - Anniversaire 2016

Publication de la release

Page 49: ToursJUG - Anniversaire 2016
Page 50: ToursJUG - Anniversaire 2016

http://fr.slideshare.net/francoisrobert/toursjug-anniversaire-2016