Creazione di un barattolo di grasso a Gradle

Questo articolo fa parte di una serie: • Introduzione a Gradle

• Ant vs Maven vs Gradle

• Scrittura di plugin Gradle personalizzati

• Creazione di un barattolo di grasso a Gradle (articolo attuale)

1. Panoramica

In questo rapido articolo, tratteremo la creazione di un "vaso grasso" in Gradle.

Fondamentalmente, un fat jar (noto anche come uber-jar) è un archivio autosufficiente che contiene sia le classi che le dipendenze necessarie per eseguire un'applicazione.

2. Configurazione iniziale

Cominciamo con un semplice file build.gradle per un progetto Java con due dipendenze:

apply plugin: 'java' repositories { mavenCentral() } dependencies { compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25' compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25' }

3. Utilizzo dell'attività Jar dal plug-in Java

Cominciamo con la modifica dell'attività jar dal plugin Java Gradle. Per impostazione predefinita, questa attività produce jar senza dipendenze.

Possiamo sovrascrivere questo comportamento aggiungendo poche righe di codice. Abbiamo bisogno di due cose per farlo funzionare:

  • un attributo Main-Class nel file manifest
  • Includere i jar delle dipendenze

Aggiungiamo alcune modifiche all'attività Gradle:

jar { manifest { attributes "Main-Class": "com.baeldung.fatjar.Application" } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } }

4. Creazione di un'attività separata

Se vogliamo lasciare il compito jar originale così com'è, possiamo crearne uno separato che farà lo stesso lavoro.

Il codice seguente aggiungerà una nuova attività chiamata customFatJar:

task customFatJar(type: Jar) { manifest { attributes 'Main-Class': 'com.baeldung.fatjar.Application' } baseName = 'all-in-one-jar' from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } with jar }

5. Utilizzo di plugin dedicati

Possiamo anche utilizzare i plugin Gradle esistenti per costruire un fat jar.

In questo esempio useremo il plugin Shadow:

buildscript { repositories { jcenter() } dependencies { classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.1' } } apply plugin: 'java' apply plugin: 'com.github.johnrengelman.shadow'

Una volta applicato il plug-in Shadow, l' attività shadowJar sarà pronta per l'uso.

6. Conclusione

In questo tutorial, abbiamo presentato alcuni modi diversi per creare barattoli di grasso in Gradle. Abbiamo sovrascritto l'attività jar predefinita, creato un'attività separata e utilizzato il plugin shadow.

Quale approccio è consigliato? La risposta è, dipende.

Nei progetti semplici, è sufficiente sovrascrivere l'attività jar predefinita o crearne una nuova. Ma man mano che il progetto cresce, consigliamo vivamente di utilizzare i plugin, perché hanno già risolto problemi più difficili come i conflitti con file META-INF esterni.

Come sempre, l'implementazione completa di questo tutorial può essere trovata su GitHub.

« Precedente Scrittura di plugin Gradle personalizzati