Come caricare una libreria Java open source su Maven Central

Questo articolo è una guida completa, dall'inizio alla fine, su come distribuire una libreria Java su Maven Central in modo che tutti possano utilizzarla includendo la dipendenza nei propri progetti.

Va da sé che deve esserci una libreria Java per essere caricata. Quindi, la prima cosa è la creazione di una libreria Java unica, con standard di codice di qualità e che sarà vantaggiosa per la comunità degli sviluppatori. Certo, ce l'hai già - ecco perché stai leggendo questo dopo tutto (o forse stai pensando di crearne uno).

In breve, per caricare una nuova brillante libreria Java su Maven Central, dovremo riservare il nostro ID di gruppo, fornire i dettagli richiesti nel pom.xml del progetto, firmare gli artefatti generati con GnuPG e, infine, distribuire nel repository Nexus di Sonatype Manager.

PRIMO PASSO:

Il primo passo è assicurarci che la nostra libreria open source sia disponibile su un repository di codice accessibile pubblicamente come Github. Quindi possiamo procedere con la prenotazione del nostro ID gruppo desiderato. L'ID gruppo dovrebbe idealmente essere univoco per un individuo o un'organizzazione, come in un dominio. Esempi di ID gruppo includono com.smattme e org.apache.commons.

Quindi, creeremo un account JIRA qui e quindi effettueremo l'accesso per creare un nuovo ticket di progetto. Facendo clic sul pulsante Crea nella parte superiore del sito Web verrà caricato un modale in cui forniremo l'ID del gruppo (ad esempio com.smattme), l'URL SCM (ad esempio https://github.com/SeunMatt/mysql-backup4j.git) , URL del progetto (ad es. https://github.com/SeunMatt/mysql-backup4j), Riepilogo (che può essere il nome della libreria come mysql-backup4j) e infine la descrizione del progetto.

NOTA: nella modalità modale per la creazione di un nuovo ticket di progetto, assicurarsi che il campo Progetto sia impostato su Supporto comunità - Hosting di repository di progetti open source (OSSRH) e Tipo di problema è Nuovo progetto.

La creazione del nuovo progetto di ticket attiverà la creazione di repository su OSS Repository Hosting (OSSRH) di Sonatype che verranno sincronizzati con Maven Central dopo aver distribuito i nostri artefatti.

È importante non eseguire la distribuzione fino a quando non viene inviata un'email di conferma della risoluzione del problema creato. Se c'è qualche problema lungo la linea, possiamo sempre commentare il problema per ottenere aiuto e / o spiegazione.

PASSO DUE:

Ora che abbiamo registrato correttamente il nostro ID gruppo, la prossima cosa da fare è aggiornare il pom.xml del progetto con le informazioni necessarie. Iniziamo fornendo il nome, la descrizione e l'URL del progetto, nonché le coordinate e le informazioni sulla confezione:

 com.smattme 
 mysql-backup4j 
 1.0.1 
 jar 
 $ {} project.groupId: $ {} project.artifactId 
 Questa è una semplice libreria per il backup di database mysql e l'invio a e-mail, archiviazione cloud e così via. Fornisce inoltre un metodo per importare a livello di codice query SQL generate durante il processo di esportazione 
 https://github.com/SeunMatt/mysql-backup4j 

La prossima è la licenza e le informazioni per gli sviluppatori. In questo caso, utilizzeremo una licenza MIT. Se viene utilizzata qualsiasi altra licenza, è sufficiente un URL corrispondente a tale licenza. Se è una licenza open source, ci sono buone probabilità che sarà disponibile su opensource.org:

<> licenze
 
   Licenza MIT   http://www.opensource.org/licenses/mit-license.php  

 
 
    Seun Matt 
    [email protected]   SmattMe   https://smattme.com 

Un'altra importante informazione richiesta è i dettagli di gestione del codice sorgente (SCM):


   scm: git: git: //github.com/SeunMatt/mysql-backup4j.git   scm: git: ssh: //github.com: SeunMatt / mysql-backup4j.git   https://github.com/SeunMatt/mysql-backup4j/tree/master  

In questo caso, il progetto è ospitato su Github, quindi il motivo dei valori forniti. Qui puoi trovare configurazioni di esempio per altri SCM.

PASSO TRE:

In questo passaggio, configureremo il nostro progetto per la distribuzione in OSSRH utilizzando il plug-in Apache Maven. Il plug-in richiede l'aggiunta di una sezione distributionManagement al nostro pom.xml:

  
   ossrh   https://oss.sonatype.org/content/repositories/snapshots  

 ossrh   https://oss.sonatype.org/service/local/staging/deploy/maven2/ 

Forniremo le credenziali dell'utente per i repository configurati sopra aggiungendo una voce a settings.xml che può essere trovata nella home directory dell'utente, ad es. /Users/smatt/.m2. Si noti che l'id è uguale a quello dello snapshotRepository e del repository configurati sopra:


  
   
     ossrh 
     your-jira-id 
     your-jira-pwd 
  
  

La prossima cosa è per noi aggiungere alcuni plugin di build Maven: codice sorgente, Javadoc, nexus staging e plugin GPG. Ognuno di questi plugin verrà inserito nel tag che si trova all'interno del tag .

La distribuzione di una libreria su OSSRH richiede la distribuzione anche del codice sorgente e JavaDoc della libreria. Quindi, aggiungeremo i plugin Maven per raggiungere questo obiettivo senza problemi:


   org.apache.maven.plugins 
   maven-javadoc-plugin   3.0.0 
 <> esecuzioni
  
    Allega-javadocs 
   
     vaso 
   
  
 

   org.apache.maven.plugins 
   maven-source-plugin   3.0.1 
 <> esecuzioni
  
    Allega-sources 
   
      vaso 
   
  

L'ultima versione dei plug-in Javadoc e del codice sorgente è disponibile qui e qui rispettivamente.

Un altro requisito che dobbiamo soddisfare è la firma dei nostri manufatti con un programma GPG / PGP. Per questo, dobbiamo installare GnuPG sul nostro sistema. Dopo il download e l'installazione, possiamo sempre eseguire gpg - version per verificare l'installazione. Nota che su alcuni sistemi verrà utilizzata la versione gpg2. Inoltre, dovremmo assicurarci che la cartella bin dell'installazione di GnuPG sia nel percorso di sistema.

Ora possiamo generare una coppia di chiavi per il nostro sistema eseguendo il comando gpg - gen-key e seguendo le istruzioni. Possiamo elencare le chiavi disponibili usando gpg - list-keys. È importante seguire questa guida per garantire che la chiave primaria generata venga utilizzata per firmare i nostri file.

Torniamo al nostro file pom.xml e aggiungiamo il plug-in Maven per il programma GnuPG in modo che i nostri file possano essere automaticamente firmati con la chiave predefinita che generiamo durante la creazione del programma:


  org.apache.maven.plugins 
  Maven-gpg-plugin 
  1.6 
 <> esecuzioni
  
    sign-artefatti 
    verificare 
   
      segno 
   
 

L'ultima versione del plugin GPG Maven è disponibile qui. Durante la generazione della nostra coppia di chiavi, abbiamo fornito una passphrase per essa; quella passphrase verrà configurata nel nostro file .m2 / settings.xml. Possiamo anche specificare l'eseguibile per il nostro programma GnuPG - gpg o gpg2. Quindi nel file settings.xml, aggiungeremo una sezione subito dopo il tag di chiusura per :


 
   ossrh 
  
   true 
  
 
    gpg 
    pass-frase 
 
 

Per concludere, aggiungeremo il plug-in Nexus Staging Maven in modo da poter distribuire la nostra libreria - incluso il codice sorgente, i file Javadoc e * .asc su OSSRH, con semplici comandi:


 
 org.sonatype.plugins 
  nexus-staging-maven-plugin   1.6.8 
  true 
 
    ossrh   https://oss.sonatype.org/   false  

L'ultima versione del plug-in è disponibile qui. Prendi nota di ossrh ; Noterai che lo stesso valore di ossrh è usato nel file settings.xml. Questo è importante affinché il plugin sia in grado di individuare le credenziali che abbiamo configurato nella sezione di settings.xml.

PASSO QUATTRO:

In questa sezione eseguiremo alcuni comandi della CLI di Maven per eseguire la distribuzione effettiva. Prima di questa fase, è giusto che ricontrolliamo e testiamo la libreria per assicurarci che non ci siano bug. Perché? Stiamo per andare in diretta!

Per iniziare con run: mvn clean deploy

Se tutto va bene, vedremo, tra gli output della console, l'ID repository di gestione temporanea creato per il progetto in questo modo:

* Creato repository di gestione temporanea con ID "comsmattme-1001".

NOTA: "comsmattme" è l'ID gruppo che abbiamo usato in questo articolo come esempio.

Accediamo a https://oss.sonatype.org con le stesse credenziali per l'account JIRA creato in precedenza per ispezionare gli artefatti che abbiamo implementato per la stadiazione. Dopo l'accesso, faremo clic su Archivi di gestione temporanea nel menu a sinistra nel sottomenu Crea promozione e utilizzando la barra di ricerca in alto a destra nella pagina, cercheremo l'ID del deposito di gestione temporanea creato ad es. comsmattme-1001 in questo caso.

Dovremmo essere in grado di vedere e ispezionare gli artefatti che sono stati caricati dal plug-in Maven di Nexus Staging. Se siamo soddisfatti di tutto, possiamo eseguire una versione eseguendo questo comando maven:

mvn nexus-staging: rilascio

Potrebbero essere necessarie fino a 2 ore o più affinché la libreria venga visualizzata su Maven Central Search. Per cercare il nostro artefatto, forniamo la seguente query nella casella di ricerca: g: com.smattme a: mysql-backup4j dove g è l'ID del gruppo e a è il nome del manufatto.

Conclusione

In questo articolo completo, abbiamo illustrato il processo di distribuzione della nostra libreria Java su Maven Central. Il pom.xml completo per il progetto di esempio utilizzato in questo articolo è disponibile qui e il settings.xml può essere trovato anche qui. Buona programmazione!

Originariamente pubblicato su smattme.com.