Lage en feit krukke i Gradle

Denne artikkelen er en del av en serie: • Introduksjon til Gradle

• Ant vs Maven vs Gradle

• Skrive egendefinerte Gradle-plugins

• Lage en fettkrukke i gradle (nåværende artikkel)

1. Oversikt

I denne raske artikkelen vil vi dekke om å lage en "fettkrukke" i Gradle.

I utgangspunktet, en fettkrukke (også kjent som uber-jar) er et selvforsynt arkiv som inneholder både klasser og avhengigheter som trengs for å kjøre et program.

2. Første oppsett

La oss starte med en enkel build.gradle fil for et Java-prosjekt med to avhengigheter:

bruk plugin: 'java' repositories {mavenCentral ()} avhengigheter {kompilere gruppe: 'org.slf4j', navn: 'slf4j-api', versjon: '1.7.25' kompilere gruppe: 'org.slf4j', navn: ' slf4j-simple ', versjon:' 1.7.25 '}

3. Bruke Jar Task From Java Plugin

La oss begynne med å endre krukke oppgave fra Java Gradle-plugin. Som standard produserer denne oppgaven krukker uten noen avhengigheter.

Vi kan overskrive denne oppførselen ved å legge til noen få kodelinjer. Vi trenger to ting for å få det til å fungere:

  • en Hovedklasse attributt i manifestfilen
  • Inkluder avhengighetskrukker

La oss legge til noen modifikasjoner i Gradle-oppgaven:

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

4. Opprette en egen oppgave

Hvis vi vil la den opprinnelige krukkeoppgaven være slik den er, kan vi lage en egen som vil gjøre den samme jobben.

Følgende kode vil legge til en ny oppgave kalt customFatJar:

oppgave customFatJar (type: Jar) {manifest {attributter 'Main-Class': 'com.baeldung.fatjar.Application'} baseName = 'alt-i-ett-jar' fra {configurations.compile.collect {it.isDirectory ( )? det: zipTree (it)}} med krukke}

5. Bruke dedikerte plugins

Vi kan også bruke eksisterende Gradle-plugins for å bygge en fettkrukke.

I dette eksemplet bruker vi Shadow-plugin:

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

Når vi bruker Shadow-plugin, blir shadowJar oppgaven vil være klar til bruk.

6. Konklusjon

I denne veiledningen presenterte vi noen forskjellige måter å lage fettkrukker på i Gradle. Vi overstyrte standard jar-oppgaven, opprettet en separert oppgave og brukte skyggeprogrammet.

Hvilken tilnærming anbefales? Svaret er - det kommer an på.

I enkle prosjekter er det nok å overstyre standard jar-oppgaven eller opprette en ny. Men etter hvert som prosjektet vokser, anbefaler vi sterkt å bruke plugins, fordi de allerede har løst vanskeligere problemer som konflikter med eksterne META-INF-filer.

Som alltid kan den fulle implementeringen av denne opplæringen finnes på GitHub.

« Tidligere skriving Tilpassede Gradle-plugins

$config[zx-auto] not found$config[zx-overlay] not found