Utilizzare GitHub come repository Maven

GitHub si è affermato come standard di fatto per ospitare i progetti opensource.
Tra i numerosi strumenti offerti vi è un rudimentale servizio di hosting (github pages) che possiamo sfruttare, tra l'altro, per gestire in proprio un repository Maven.
Vediamo come gestirlo supponendo di avere un progetto Java che utilizzi Gradle.

1. Preparare il repository su GitHub
Create un nuovo repository su GitHub, dopo andate su Settings, ed abilitate GitHub Pages selezionando "master branch".
Quello che otterremo è che tutto cio che verrà committato sul master branch sarà automaticamente disponibile al seguente URL

https://vostroNomeUtente.github.io/nomeRepository

2. Clonate il repository sulla vostra workstation eseguendo il comando

git clone https://github.com/vostroNomeUtente/nomeRepository.git
supponiamo che l'output sia finito in /home/lorenzo/nomeRepository

3. Adeguate il file build.gradle
Dobbiamo indicare a Gradle di utilizzare il plugin maven, l'indirizzo locale del repository maven ed il corretto group e version (il nome dell'artefatto corrisponderà a quello del progetto).


// .......
apply plugin: 'maven'
// .....
group = 'it.lorenzoingrilli' // cambiatelo con un valore appropriato
version = '1.0.0' // qui mettete la versione che state rilasciando
// .....
uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file:///home/lorenzo/nomeRepository")
        }
    }
}
// .....

4. Come pubblicare il Jar
I precedenti passi vanno fatti solo una volta, mentre ogni volta che si dovrà rilasciare una nuova versione del nostro artefatto dovremo
4.A) aggiornare la variabile "version" nel build.gradle
4.B) pubblicare nella cartella locale tramite il comando
gradle uploadArchives
4.C) Effettuare il commit ed il push verso GitHub con
cd /home/lorenzo/nomeRepository
git add -A . 
git commit -m "rilasciata versione 1.0.0"
git push origin

Una nota
In realtà non trovo che ospitare un repository Maven su GitHub sia una soluzione ottimale, ma è comoda e richiede una manutenzione pressocchè nulla quindi va bene per ospitare piccoli repository pubblicamente accessibili.
Potete usare questa soluzione per le vostre piccole librerie che non sono presenti su Maven Central ma che riutilizzate in diversi progetti. In tal caso nel progetto che utilizza la libreria affiancherete al maven central anche il repository così gestito:


// ...
repositories {
	mavenCentral() // questo sicuramente lo avete già in tutti i progetti
	maven { // con questa sezione di aggiunge il secondo repo maven gestito da noi
		url "https://vostroNomeUtente.github.io/nomeRepository"
	}
}
// ...
dependencies {
// ...
    compile 'it.lorenzoingrilli:nomeArtefatto:1.0.0' // questa è la libreria appena pubblicata
// ...
}
// ...