Lage en feit krukke i 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