Ant vs Maven vs Gradle

Tento článok je súčasťou série: • Úvod do programu Gradle

• Ant vs Maven vs Gradle (aktuálny článok) • Písanie vlastných doplnkov Gradle

• Vytvorenie tučnej nádoby v Gradle

1. Úvod

V tomto článku to preskúmame tri nástroje na automatizáciu zostavovania Java, ktoré dominovali v ekosystéme JVM - Ant, Maven a Gradle.

Každý z nich si predstavíme a preskúmame, ako sa vyvinuli nástroje na automatizáciu zostavovania Java.

2. Apache Ant

Na začiatku bol Make jediný nástroj na automatizáciu zostavovania dostupné nad rámec domácich riešení. Značka existuje už od roku 1976 a ako taká sa používala na vytváranie aplikácií Java v prvých rokoch Javy.

Veľa konvencií z programov C sa však nezmestilo do ekosystému Java, takže časom sa ich ako lepšej alternatívy ujal Ant.

Apache Ant („Another Neat Tool“) je knižnica Java používaná na automatizáciu procesov zostavovania aplikácií Java. Ant je možné navyše použiť na vytváranie aplikácií, ktoré nie sú Java. Spočiatku bol súčasťou kódovej základne Apache Tomcat a bol vydaný ako samostatný projekt v roku 2000.

V mnohých aspektoch je Ant veľmi podobný programu Make a je dosť jednoduchý na to, aby ho mohol ktokoľvek začať používať bez akýchkoľvek osobitných predpokladov. Súbory na vytváranie mravcov sú napísané v XML a podľa konvencie sa volajú build.xml.

Rôzne fázy procesu budovania sa nazývajú „ciele“.

Tu je príklad a build.xml súbor pre jednoduchý projekt Java s HelloWorld hlavná trieda:

Tento súbor zostavenia definuje štyri ciele: čistý, zostaviť, jar a bežať. Napríklad môžeme zostaviť kód spustením:

mravec zostaviť

To spustí cieľ čistý najskôr sa vymaže adresár „classes“. Potom cieľ zostaviť znova vytvorí adresár a do neho skompiluje priečinok src.

Hlavnou výhodou Ant je jeho flexibilita. Ant neuvádza žiadne konvencie kódovania ani štruktúry projektu. To znamená, že Ant vyžaduje, aby vývojári sami písali všetky príkazy, čo niekedy vedie k obrovským súborom XML build, ktoré sa ťažko udržiavajú.

Pretože neexistujú žiadne konvencie, iba znalosť Antu neznamená, že rýchlo pochopíme akýkoľvek súbor zostavy Ant. Zvyknúť si na neznámy súbor Ant bude pravdepodobne chvíľu trvať, čo je v porovnaní s ostatnými novšími nástrojmi nevýhoda.

Ant spočiatku nemal zabudovanú podporu pre správu závislostí. Pretože sa však správa závislostí v neskorších rokoch stala nevyhnutnosťou, bol server Apache Ivy vyvinutý ako čiastkový projekt projektu Apache Ant. Je integrovaný s Apache Ant a dodržiava rovnaké princípy návrhu.

Počiatočné obmedzenia Ant však kvôli tomu, že nemali zabudovanú podporu pre správu závislostí a frustrácie pri práci s nezvládnuteľnými súbormi zostavenia XML, viedli k vytvoreniu Mavenu.

3. Apache Maven

Apache Maven je nástroj na správu závislostí a automatizáciu vytvárania, primárne používaný pre aplikácie Java. Maven naďalej používa súbory XML rovnako ako Ant, ale oveľa lepšie zvládnuteľným spôsobom. Názov hry je tu konvencia nad konfiguráciou.

Zatiaľ čo Ant dáva flexibilitu a vyžaduje, aby bolo všetko napísané úplne od začiatku, Maven sa spolieha na konvencie a poskytuje preddefinované príkazy (ciele).

Zjednodušene povedané, Maven nám umožňuje sústrediť sa na to, čo by mala naša zostava robiť, a dáva nám k tomu rámec. Ďalším pozitívnym aspektom programu Maven bolo, že poskytoval zabudovanú podporu pre správu závislostí.

Konfiguračný súbor Maven obsahujúci pokyny na zostavenie a správu závislostí sa volá konvenciou pom.xml. Okrem toho Maven tiež predpisuje prísnu štruktúru projektu, zatiaľ čo Ant poskytuje flexibilitu aj tam.

Tu je príklad a pom.xml súbor pre rovnaký jednoduchý projekt Java s HelloWorld hlavná trieda predtým:

 4.0.0 baeldung mavenPriklad 0,0.1-SNAPSHOT Maven príklad junit junit 4,12 test 

Teraz však bola štandardizovaná aj štruktúra projektu, ktorá je v súlade s Mavenovými konvenciami:

+ --- src | + --- hlavné | | + --- java | | | \ --- com | | | \ --- baeldung | | | \ --- maven | | | HelloWorld.java | | | | | \ --- zdroje | \ --- test | + --- java | \ --- zdroje

Na rozdiel od Anta nie je potrebné každú z fáz procesu zostavovania definovať manuálne. Namiesto toho môžeme jednoducho zavolať zabudované príkazy Mavenu.

Napríklad môžeme zostaviť kód spustením:

mvn zostaviť

Ako je uvedené na oficiálnych stránkach, Maven možno považovať za rámec vykonávania doplnkov, pretože všetka práca sa vykonáva pomocou doplnkov. Maven podporuje širokú škálu dostupných doplnkov a každý z nich je možné dodatočne nakonfigurovať.

Jedným z dostupných doplnkov je Apache Maven Dependency Plugin, ktorý má závislosti na kopírovaní cieľ, ktorý skopíruje naše závislosti do zadaného adresára.

Ak chcete tento doplnok zobraziť v akcii, zahrňme tento doplnok do našej pom.xml súbor a nakonfigurujte výstupný adresár pre naše závislosti:

   org.apache.maven.plugins balíček závislostí maven závislosť kopírovania balík závislostí kopírovania cieľ / závislosti 

Tento doplnok sa vykoná v balíček fáza, takže ak spustíme:

balíček mvn

Vykonáme tento doplnok a skopírujeme závislosti do cieľového priečinka / priečinok závislostí.

Existuje tiež článok o tom, ako vytvoriť spustiteľný súbor JAR pomocou rôznych doplnkov Maven. Ak si chcete pozrieť podrobný prehľad Maven, prečítajte si túto základnú príručku Mavenu, kde sú preskúmané niektoré kľúčové funkcie Mavenu.

Maven sa stal veľmi populárnym, pretože súbory na zostavenie boli teraz štandardizované a údržba súborov na zostavenie trvala podstatne menej času, v porovnaní s Ant. Aj keď sú však konfiguračné súbory Maven štandardizovanejšie ako súbory Ant, stále majú tendenciu byť veľké a ťažkopádne.

Mavenove prísne konvencie prichádzajú s cenou za to, že sú oveľa menej flexibilné ako Ant. Prispôsobenie cieľov je veľmi ťažké, takže písanie vlastných skriptov na zostavenie je oveľa ťažšie v porovnaní s programom Ant.

Aj keď Maven urobil niekoľko vážnych vylepšení týkajúcich sa uľahčenia a štandardizácie procesov zostavovania aplikácie, stále prichádza s cenou kvôli tomu, že je oveľa menej flexibilný ako Ant. To viedlo k vytvoreniu Gradle, ktoré kombinuje to najlepšie z oboch svetov - flexibilitu Mravca a Mavenove vlastnosti.

4. Gradle

Gradle je nástroj na správu závislostí a nástroj na automatizáciu zostavovania bola postavená na konceptoch Ant a Maven.

Jednou z prvých vecí, ktoré si môžeme o Gradle všimnúť, je, že na rozdiel od Ant alebo Maven nepoužíva súbory XML.

Postupom času sa vývojári čoraz viac zaujímali o to, aby sme mali jazyk pre konkrétnu doménu a aby sme s ním pracovali - čo by im zjednodušene umožnilo riešiť problémy v konkrétnej doméne pomocou jazyka šitého na mieru pre konkrétnu doménu.

Toto si osvojil Gradle, ktorý používa DSL založené na Groovy alebo Kotlin. To viedlo k menším konfiguračným súborom s menším počtom neporiadkov, pretože jazyk bol špeciálne navrhnutý na riešenie konkrétnych problémov domény. Konfiguračný súbor spoločnosti Gradle sa nazýva konvencia build.gradle v Groovy, príp build.gradle.kts v Kotline.

Všimnite si, že Kotlin ponúka lepšiu podporu IDE ako Groovy pre automatické dokončovanie a detekciu chýb.

Tu je príklad a build.gradle súbor pre rovnaký jednoduchý projekt Java s HelloWorld hlavná trieda predtým:

apply plugin: 'java' repositories {mavenCentral ()} jar {baseName = 'gradleExample' version = '0.0.1-SNAPSHOT'} závislosti {testImplementation 'junit: junit: 4.12'}

Kód môžeme skompilovať spustením:

triedy gradle

V jadre spoločnosť Gradle zámerne poskytuje veľmi malú funkčnosť. Pluginy pridávajú všetky užitočné funkcie. V našom príklade sme používali java plugin, ktorý nám umožňuje kompilovať Java kód a ďalšie cenné vlastnosti.

Gradle dal svojim zostavovacím krokom názov „úlohy“, na rozdiel od „cieľov“ alebo „fáz“ Mavena. S programom Maven sme použili modul Apache Maven Dependency Plugin a jeho konkrétnym cieľom je skopírovať závislosti do zadaného adresára. S programom Gradle môžeme robiť to isté pomocou úloh:

task copyDependencies (type: Copy) {from configurations.compile into 'dependencies'}

Túto úlohu môžeme spustiť vykonaním:

gradle copyDependencies

5. Záver

V tomto článku sme predstavili Ant, Maven a Gradle - tri nástroje na automatizáciu zostavovania Javy.

Nie je prekvapením, že Maven dnes drží väčšinu trhu s nástrojmi na zostavovanie.

Gradle sa však dobre osvojil v zložitejších databázach kódov, a to z nasledujúcich dôvodov:

  • Teraz ho využíva veľa open-source projektov, ako napríklad Spring
  • Je to vďaka jeho prírastkovým zostaveniam pre väčšinu scenárov rýchlejšie ako Maven
  • Ponúka pokročilé analytické a ladiace služby

Zdá sa však, že Gradle má strmšiu krivku učenia, najmä ak nie ste oboznámení s Groovyom alebo Kotlinom.

Ďalšie » Zápis vlastných doplnkov Gradle « Predchádzajúci úvod do programu Gradle

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