toursjug - anniversaire 2016

Post on 08-Apr-2017

383 Views

Category:

Engineering

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Publier sur un repo central

/** * @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"); }}

Pourquoi ?

Lib qui n’existe pas

Idée du siècle

Plugin maven

complexe Iznogoud

Lib qui n’existe pas

Swagger UI+Swagger

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

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

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

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

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

Coordonnées du projet

Sour

ces Javadoc

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

Nom de domaine

domain.fr

fr.domain……

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

Repo github

com.github.ptitbob

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

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>

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

Disposer d’une clé PGP

Installation de gnupg2

Générer une clé

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

gpg2 --gen-key

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

Ne mettez pas votrepassphrase

dans le pom !!!

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>

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

Licence ?

Laquelle ?!!!!

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>

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

<developers> <developer> <name>Francois Robert</name> <email>francois.robert@shipstone.org</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

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

Repo de source….

<scm> <url>https://github.com/ptitbob/swagger-ui-integration</url> <connection>scm:git:git@github.com:ptitbob/swagger-ui-integration.git</connection> <developerConnection>scm:git:git@github.com:ptitbob/swagger-ui-integration.git</developerConnection> </scm>

Demande de publication

http://issues.sonatype.org

Open Source Software Repository Hosting (OSSRH)

Demande de publication

Il en existe d’autres

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

Créez vous un compte

Création de demande

Demande de publication

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

Nouveau projet

Le projet en une phrase

Courte description

Demande de publication

Le groupId choisi

Site de description ou lien vers le README

L’URL (github ou bitbucket)

Login Sonatype

Demande de publication

Demande déposée le 05/03

Demande de publication… 2 jours plus tard :

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

Configuration de la release

Utilisation du plugin Release

Utilisation du plugin Nexus

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>

Configuration de la releaseUtilisation du plugin Release

mvn clean install release:clean release:prepare

Création d’un tag de version

Configuration de la releaseUn petit plus…

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

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é

Publication de la release

Publication de la release

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

top related