#IOextendedGE16 DIPENDENZE +PaoloMontalto Librerie di terze parti o altri progetti necessari alla compilazione di un progetto software Non ha senso: ¤ Reinventare la ruota ad ogni nuovo progetto ¤ Portarsi dietro delle classi facendo copia e incolla da altri progetti ¤ Portarsi dietro dei jar di versione e provenienza dubbia ¤ Fare copia e incolla da Stackoverflow
#IOextendedGE16 DIPENDENZE +PaoloMontalto Librerie di terze parti o altri progetti necessari alla compilazione di un progetto software Non ha senso: ¤ Reinventare la ruota ad ogni nuovo progetto ¤ Portarsi dietro delle classi facendo copia e incolla da altri progetti ¤ Portarsi dietro dei jar di versione e provenienza dubbia ¤ Fare copia e incolla da Stackoverflow build automation
#IOextendedGE16 MAVEN +PaoloMontalto Forse il più noto sistema di build automation ¤ consente di definire il ciclo di vita di un processo di build ¤ definisce le dipendenze del proge4o ¤ file di configurazione basa5 su XML ¤ repository di librerie Identifica le dipendenze tramite groupId identifica il progetto univocamente it.xabaras.android.logger artifactId è il nome della libreria (senza versione) Logger version è il numero di versione della libreria 1.3.6 E’ possibile distribuire più artifact nella stessa versione: libreria, documentazione, sorgenti
version #IOextendedGE16 GRADLE +PaoloMontalto Sistema di build automation ¤ mul5pia4aforma ¤ mul5linguaggio ¤ mul5proge4o ¤ DSL basato su groovy ¤ build incrementali ¤ notazione compa4a per le dipendenze ¤ Usa maven come repository locale/remoto per le dipendenze compile 'it.xabaras.android.logger:Logger:1.3.6’ groupId ar5factId dependencies { }
#IOextendedGE16 PERCHÉ DISTRIBUIRE LIBRERIE? +PaoloMontalto ¤ Riuso del codice ¤ Librerie disponibili online sempre ¤ Rendere disponibili versioni aggiornate ¤ Certezza della provenienza dei file ¤ Maggiore facilità manutenzione ¤ Contribuire alla comunità
#IOextendedGE16 MAVEN CENTRAL VS JCENTER +PaoloMontalto Maven Central h4p://search.maven.org JCenter h4p://jcenter.bintray.com Sonatype ¤ Linea di commando ¤ Jira ticket ¤ cifratura build JFrog ¤ Web UI ¤ semplice da usare (no cifratura) ¤ Integrazione con GitHub e BitBucket ¤ Sincronizzazione con Maven Central ¤ Statistiche di download
#IOextendedGE16 MAVEN CENTRAL VS JCENTER +PaoloMontalto Maven Central h4p://search.maven.org JCenter h4p://jcenter.bintray.com Sonatype ¤ Linea di commando ¤ Jira ticket ¤ cifratura build JFrog ¤ Web UI ¤ semplice da usare (no cifratura) ¤ Integrazione con GitHub e BitBucket ¤ Sincronizzazione con Maven Central ¤ Statistiche di download >= mavenCentral()
#IOextendedGE16 PUBBLICARE SU JCENTER +PaoloMontalto ¤ Registrarsi su Bintray ¤ Creare un package nel repository maven ¤ Configurare il progetto gradle ¤ Caricare gli artifact su bintray ¤ Sincronizzare il repository con jcenter
#IOextendedGE16 PUBBLICARE SU JCENTER +PaoloMontalto ¤ Registrarsi su Bintray ¤ Creare un package nel repository maven ¤ Configurare il progetto gradle ¤ Caricare gli artifact su bintray ¤ Sincronizzare il repository con jcenter
#IOextendedGE16 PUBBLICARE SU JCENTER +PaoloMontalto ¤ Registrarsi su Bintray ¤ Creare un package nel repository maven ¤ Configurare il progetto gradle ¤ Caricare gli artifact su bintray ¤ Sincronizzare il repository con jcenter
#IOextendedGE16 PUBBLICARE SU JCENTER +PaoloMontalto ¤ Registrarsi su Bintray ¤ Creare un package nel repository maven ¤ Configurare il progetto gradle ¤ Caricare gli artifact su bintray ¤ Sincronizzare il repository con jcenter
#IOextendedGE16 CARICARE GLI ARTIFACT SU BINTRAY 3 +PaoloMontalto La libreria è sul vostro repository maven ma non su jcenter repositories { maven { url 'h4ps://dl.bintray.com/xabaras/maven' } } ... dependencies { compile 'it.xabaras.android.logger:Logger:1.3.6' }
#IOextendedGE16 PUBBLICARE SU JCENTER +PaoloMontalto ¤ Registrarsi su Bintray ¤ Creare un package nel repository maven ¤ Configurare il progetto gradle ¤ Caricare gli artifact su bintray ¤ Sincronizzare il repository con jcenter
#IOextendedGE16 PUBBLICARE ANCHE SU MAVEN CENTRAL +PaoloMontalto ¤ Creare un account Sonatype ¤ Creare una issue su JIRA ¤ Aggiungere lo username Sonatype su Bintray ¤ Abilitare l’auto signing delle build su Bintray (coppia chiavi GPG) ¤ Configurare il build.gradle ¤ Caricare gli artifact su bintray ¤ Sincronizzare il repository con Maven Central
#IOextendedGE16 PUBBLICARE ANCHE SU MAVEN CENTRAL 2 +PaoloMontalto ¤ Creare un account Sonatype ¤ Creare una issue su JIRA ¤ Aggiungere lo username Sonatype su Bintray ¤ Abilitare l’auto signing delle build su Bintray (coppia chiavi GPG) ¤ Configurare il build.gradle ¤ Caricare gli artifact su bintray ¤ Sincronizzare il repository con Maven Central
#IOextendedGE16 PUBBLICARE ANCHE SU MAVEN CENTRAL 3 +PaoloMontalto ¤ Creare un account Sonatype ¤ Creare una issue su JIRA ¤ Aggiungere lo username Sonatype su Bintray ¤ Abilitare l’auto signing delle build su Bintray (coppia chiavi GPG) ¤ Configurare il build.gradle ¤ Caricare gli artifact su bintray ¤ Sincronizzare il repository con Maven Central
#IOextendedGE16 PUBBLICARE ANCHE SU MAVEN CENTRAL 4 +PaoloMontalto ¤ Creare un account Sonatype ¤ Creare una issue su JIRA ¤ Aggiungere lo username Sonatype su Bintray ¤ Abilitare l’auto signing delle build su Bintray (coppia chiavi GPG) ¤ Configurare il build.gradle ¤ Caricare gli artifact su bintray ¤ Sincronizzare il repository con Maven Central
#IOextendedGE16 PUBBLICARE ANCHE SU MAVEN CENTRAL 5 +PaoloMontalto ¤ Creare un account Sonatype ¤ Creare una issue su JIRA ¤ Aggiungere lo username Sonatype su Bintray ¤ Abilitare l’auto signing delle build su Bintray (coppia chiavi GPG) ¤ Configurare il build.gradle ¤ Caricare gli artifact su bintray ¤ Sincronizzare il repository con Maven Central
#IOextendedGE16 PUBBLICARE ANCHE SU MAVEN CENTRAL 5 +PaoloMontalto ¤ build.gradle publishing { publications { mavenStuff(MavenPublication) { from components.java groupId group artifactId rootProject.name version version artifact sourcesJar artifact javadocJar pom.withXml { // package name, description, licenses and developer info } } } }
#IOextendedGE16 PUBBLICARE ANCHE SU MAVEN CENTRAL 6 +PaoloMontalto ¤ Creare un account Sonatype ¤ Creare una issue su JIRA ¤ Aggiungere lo username Sonatype su Bintray ¤ Abilitare l’auto signing delle build su Bintray (coppia chiavi GPG) ¤ Configurare il build.gradle ¤ Caricare gli artifact su bintray ¤ Sincronizzare il repository con Maven Central
#IOextendedGE16 PUBBLICARE ANCHE SU MAVEN CENTRAL 7 +PaoloMontalto ¤ Creare un account Sonatype ¤ Creare una issue su JIRA ¤ Aggiungere lo username Sonatype su Bintray ¤ Abilitare l’auto signing delle build su Bintray (coppia chiavi GPG) ¤ Configurare il build.gradle ¤ Caricare gli artifact su bintray ¤ Sincronizzare il repository con Maven Central
#IOextendedGE16 QUALCHE RIFERIMENTO +PaoloMontalto ¤ How to distribute your own Android library through jCenter and Maven Central from Android Studio @TheCheeseFact ¤ Distribute your libraries via Maven, even privately @molsjeroen ¤ Getting Started Using the Gradle Bintray Plugin bintray/gradle-bintray-plugin
#IOextendedGE16 GRAZIE PER L’ATTENZIONE https://github.com/xabaras/ http://www.slideshare.net/montypablo PAOLO MONTALTO http://www.xabaras.it https://it.linkedin.com/in/paolomontalto Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. John F. Woods +PaoloMontalto [email protected]