SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
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
@SwaggerUIConfiguration

public 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
Sources 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é publique
http://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 votre
passphrase
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 ?!!!!
LGPL
Licence 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 publication
Community 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
Demandedéposéele05/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 release
Utilisation 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 release
Utilisation du plugin Release
mvn clean install release:clean release:prepare
Création d’un tag de version
Configuration de la release
Un 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.xml
settings.xml
Configuration de la release
Publication de la release
En 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

Más contenido relacionado

Similar a ToursJUG - Anniversaire 2016

Distribuer une librairie via maven
Distribuer une librairie via mavenDistribuer une librairie via maven
Distribuer une librairie via mavenFranck SIMON
 
Uni.sherbrooke 2015 créez la meilleur application grâce à gwt, gwtp et j...
Uni.sherbrooke 2015   créez la meilleur application grâce à gwt, gwtp et j...Uni.sherbrooke 2015   créez la meilleur application grâce à gwt, gwtp et j...
Uni.sherbrooke 2015 créez la meilleur application grâce à gwt, gwtp et j...Arcbees
 
Meetup devops Geneva 20.03.18
Meetup devops Geneva 20.03.18Meetup devops Geneva 20.03.18
Meetup devops Geneva 20.03.18Hidora
 
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - ZenikaPrésentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - ZenikaZenika
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovyguest6e3bed
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation GroovyJS Bournival
 
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Pierre Ternon
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdfbadrfathallah2
 
Industrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPIndustrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPhalleck45
 
Les générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienLes générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienNicolas Carlo
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projetjollivetc
 
gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !Carles Sistare
 
gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!David Caramelo
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)Neo4j
 

Similar a ToursJUG - Anniversaire 2016 (20)

Java - Lombok
Java - LombokJava - Lombok
Java - Lombok
 
Distribuer une librairie via maven
Distribuer une librairie via mavenDistribuer une librairie via maven
Distribuer une librairie via maven
 
graylogF (2).pptx
graylogF (2).pptxgraylogF (2).pptx
graylogF (2).pptx
 
Uni.sherbrooke 2015 créez la meilleur application grâce à gwt, gwtp et j...
Uni.sherbrooke 2015   créez la meilleur application grâce à gwt, gwtp et j...Uni.sherbrooke 2015   créez la meilleur application grâce à gwt, gwtp et j...
Uni.sherbrooke 2015 créez la meilleur application grâce à gwt, gwtp et j...
 
Phigrate
PhigratePhigrate
Phigrate
 
graylog.pptx
graylog.pptxgraylog.pptx
graylog.pptx
 
Meetup devops Geneva 20.03.18
Meetup devops Geneva 20.03.18Meetup devops Geneva 20.03.18
Meetup devops Geneva 20.03.18
 
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - ZenikaPrésentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdf
 
Industrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPIndustrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHP
 
Les générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienLes générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidien
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
 
gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !
 
gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)
 

Último

firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirstjob4
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de planchermansouriahlam
 
optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdfSoukainaMounawir
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Ville de Châteauguay
 
Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésSana REFAI
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 

Último (7)

firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdf
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 
optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdf
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigés
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 

ToursJUG - Anniversaire 2016