Skapa en fet burk i Gradle

Denna artikel är en del av en serie: • Introduktion till Gradle

• Ant vs Maven vs Gradle

• Skriva anpassade Gradle-plugins

• Skapa en fet burk i Gradle (aktuell artikel)

1. Översikt

I den här snabba artikeln kommer vi att täcka om du skapar en "fettburk" i Gradle.

I grund och botten är en fettburk (även känd som uber-jar) ett självförsörjande arkiv som innehåller både klasser och beroenden som behövs för att köra en applikation.

2. Första installationen

Låt oss börja med en enkel build.gradle- fil för ett Java-projekt med två beroenden:

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. Använda Jar Task From Java Plugin

Låt oss börja med att ändra jar- uppgiften från Java Gradle-plugin. Som standard producerar denna uppgift burkar utan beroenden.

Vi kan skriva över detta beteende genom att lägga till några rader kod. Vi behöver två saker för att få det att fungera:

  • en Main-klass attribut i manifestfilen
  • Inkludera beroendekrukor

Låt oss lägga till några modifieringar i Gradle-uppgiften:

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

4. Skapa en separat uppgift

Om vi ​​vill lämna den ursprungliga burkuppgiften som den är kan vi skapa en separat som gör samma jobb.

Följande kod lägger till en ny uppgift som heter 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. Använda dedikerade plugins

Vi kan också använda befintliga Gradle-plugins för att bygga en fettburk.

I det här exemplet använder vi Shadow-plugin:

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

När vi har installerat Shadow-plugin-programmet är ShadowJar- uppgiften redo att användas.

6. Sammanfattning

I denna handledning presenterade vi några olika sätt att skapa fettburkar i Gradle. Vi överstyrde standard jar-uppgiften, skapade en separat uppgift och använde skugg-plugin.

Vilket tillvägagångssätt rekommenderas? Svaret är - det beror på.

I enkla projekt räcker det att åsidosätta standard jar-uppgiften eller skapa en ny. Men när projektet växer rekommenderar vi starkt att använda plugins, eftersom de redan har löst svårare problem som konflikter med externa META-INF-filer.

Som alltid finns det fullständiga genomförandet av den här guiden på GitHub.

« Tidigare skrivande anpassade Gradle-plugins