Jáva

Ant vs Maven vs Gradle

Ant vs Maven vs Gradle

Výběr správného nástroje pro sestavení: Ant vs Maven vs Gradle

Během vývoje softwaru musí vývojáři znovu a znovu vytvářet stejný kód. Často se k automatizaci úlohy snaží použít bash skripty nebo jiné skriptovací jazyky. K dispozici jsou však nástroje pro sestavení, které jsou vhodnější pro automatizaci sestavení. Převládající nástroje pro sestavení jsou:

Prozkoumejme nástroje, abychom zjistili více.

Apache Ant s Ivy

Apache Ant je nástroj příkazového řádku založený na prostředí Java, který k definování skriptů sestavování používá soubory XML. Používá se převážně pro sestavení Java, ale lze jej použít také pro vývoj v C / C ++. Integrované úlohy poskytují způsoby kompilace, sestavování, testování a spouštění softwarových aplikací. Uživatelé mohou také vytvořit své vlastní „antlibs“, aby vylepšili funkčnost Ant. Apache Ivy je nástroj pro správu závislostí, který se snadno integruje s Ant a poskytuje robustnější ekosystém. Vývoj Ant začal v roce 2000.

Profesionálové

Nevýhody

Příklad mravence s břečťanem

Zde si můžete nainstalovat nejnovější Ant. Musíte si stáhnout zip, rozbalit a umístit složku bin do cesty. Pomocí následujícího příkazu můžete zjistit, zda je Ant nainstalován správně:

$ ant-verze
Apache Ant (TM) verze 1.10.1 sestaveno 2. února 2017

Jakmile máte Ant nainstalován, můžete si stáhnout nejnovější Ivy jar a umístit jej do složky lib v adresáři Ant.

Po instalaci Ant vytvořte složky helloworld a helloworld / src. Do složky src vložte helloworld.java soubor s kódem:

/ ***************************
Vytiskne „Hello World!"
**************************** /
veřejná třída helloworld
public static void main (String [] args)
Systém.ven.println ("Hello World!");

Nyní ve složce helloworld vytvořte sestavení.xml soubor s následujícím kódem:
























A ve stejné složce helloworld vytvořte břečťan.xml soubor s následujícím kódem:






Struktura adresářů by měla vypadat takto:

Ahoj světe
| - sestavení.xml
| - břečťan.xml
'- src
'-- Ahoj světe.Jáva

Nyní můžete sestavení spustit pomocí příkazu:

$ mravenec jar

Úspěšné sestavení by mělo poskytovat výstup takto:

$ mravenec jar
Buildfile: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml
odhodlání:
[břečťan: načíst] :: Apache Ivy 2.4.0 - 20141213170938 :: http: // ant.apache.org / břečťan / ::
[břečťan: načíst] :: nastavení načítání :: url = jar: soubor: / Users / zak / BuildTools / ANT / apache
-mravenec-1.10.1 / lib / břečťan-2.4.0.sklenice!/ org / apache / ivy / core / settings / ivysettings.xml
[břečťan: načíst] :: řešení závislostí :: org.apache # helloworld; [chráněno e-mailem]
MacBook air.místní
[břečťan: načíst] confs: [výchozí]
[břečťan: načíst] nalezen junit # junit; 4.12 na veřejnosti
[břečťan: načíst] nalezená org.hamcrest # hamcrest-core; 1.3 na veřejnosti
[břečťan: načíst] :: zpráva o řešení :: řešení 397ms :: artefakty dl 15ms
---------------------------------------------------------------------
| | moduly || artefakty |
| conf | číslo | hledat | dwnlded | vystěhovaný || číslo | dwnlded |
---------------------------------------------------------------------
| výchozí | 2 | 0 | 0 | 0 || 4 | 0 |
---------------------------------------------------------------------
[břečťan: načíst] :: načítání :: org.apache # helloworld
[břečťan: načíst] confs: [výchozí]
[břečťan: načíst] 0 zkopírovaných artefaktů, 4 již načtené (0 kB / 39 ms)
kompilovat:
[mkdir] Vytvořil adresář: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build /
třídy
[javac] / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml: 22: varování:
Nebylo nastaveno 'includeeantruntime', výchozí nastavení bylo sestavení.sysclasspath = poslední; nastavena na hodnotu false
pro opakovatelné sestavení
[javac] Kompilace 1 zdrojového souboru do / Users / zak / _work / LearnBuildScripts / LearnANT /
helloworld / build / classes
sklenice:
[mkdir] Vytvořil adresář: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin
[jar] Building jar: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin /
Ahoj světe.sklenice
STAVĚJTE ÚSPĚŠNĚ
Celkový čas: 6 sekund

Soubor jar můžete vyzkoušet takto:

$ java -cp build / bin / helloworld.jar helloworld
Ahoj světe!

Definovali jsme soubor jar, který má být vložen do složky build / bin. Složky se vytvoří během sestavení. Příkaz ant jar volá cíl jar v sestavení.xml.

Maven

Maven byl vyvinut k vyřešení problémů, kterým čelí skriptování na bázi Ant. Zachovala soubory XML, ale zvolila jiný přístup k organizaci. V Antu musí vývojáři vytvořit všechny úkoly. Maven snižuje vytváření úloh implementací silnějších standardů pro organizaci kódu. Ve výsledku je snazší začít se standardními projekty.

Zavedlo také stahování závislostí, což usnadnilo vývoj. Před zavedením Ivy v Ant museli uživatelé spravovat závislosti lokálně. Maven nejprve přijal filozofii správy závislostí.

Přísné standardy Mavens však ztěžují psaní vlastních sestavovacích skriptů. S tímto nástrojem se snadno pracuje, pokud projekt splňuje přísné standardy.

Profesionálové

Nevýhody

Příklad Maven

Zde si můžete stáhnout nejnovější Maven. Instalaci můžete zkontrolovat takto:

$ mvn - verze
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T00: 58: 13-07: 00)
Domovská stránka Maven: / Users / zak / BuildTools / Maven / apache-maven-3.5.2
Verze Java: 1.8.0_74, prodejce: Oracle Corporation
Domovská stránka Java: / Library / Java / JavaVirtualMachines / jdk1.8.0_74.jdk / Obsah / Domů / jre
Výchozí národní prostředí: en_US, kódování platformy: UTF-8
Název OS: „mac os x“, verze: „10.11.6 ", arch:" x86_64 ", rodina:" mac "

Vytvořte složku helloworld a vygenerujte projekt pomocí následujícího příkazu:

$ mvn archetyp: generate -DgroupId = com.Jméno společnosti.helloworld -DartifactId = helloworld
-DarchetypeArtifactId = maven-archetype-quickstart -DinteractiveMode = false

Měl by vytvořit strukturu složek a vygenerovat výstup, který vypadá takto:

[INFO] Hledání projektů…
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin: 3.0.0: generate (default-cli)> generate-sources
@ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.0.0:generate (default-cli) < generate-sources
@ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin: 3.0.0: generate (default-cli) @ standalone-pom ---
[INFO] Generování projektu v dávkovém režimu
[INFO] ----------------------------------------------------------------------------
[INFO] Použití následujících parametrů pro vytvoření projektu ze starého (1.x) Archetyp:
maven-archetype-quickstart: 1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parametr: basedir, hodnota: / Users / zak / _work / LearnBuildScripts / LearnMaven
[INFO] Parametr: balíček, hodnota: kom.Jméno společnosti.Ahoj světe
[INFO] Parametr: groupId, hodnota: com.Jméno společnosti.Ahoj světe
[INFO] Parametr: artifactId, hodnota: helloworld
[INFO] Parametr: název_balíku, hodnota: kom.Jméno společnosti.Ahoj světe
[INFO] Parametr: verze, hodnota: 1.0-SNAPSHOT
[INFO] projekt vytvořený ze starého (1.x) Archetyp v adresáři: / Users / zak / _work /
LearnBuildScripts / LearnMaven / helloworld
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Celkový čas: 8.602 s
[INFO] Hotovo v: 2018-01-27T00: 05: 37-08: 00
[INFO] Konečná paměť: 15M / 152M
[INFO] ------------------------------------------------------------------------

Struktura složek by měla vypadat takto:

Ahoj světe
| - pom.xml
'- src
| - hlavní
| '- java
| '- com
| '-- Jméno společnosti
| '-- Ahoj světe
| '-- Aplikace.Jáva
'-- test
'- java
'- com
'-- Jméno společnosti
'-- Ahoj světe
'- AppTest.Jáva

Pom.xml obsahuje konfigurace sestavení. Uvnitř pom.xml kód vypadá takto:

xsi: schemaLocation = "http: // maven.apache.org / POM / 4.0.0 http: // maven.apache.org / maven-v4_0
_0.xsd ">
4.0.0
com.Jméno společnosti.Ahoj světe
Ahoj světe
sklenice
1.0-SNAPSHOT
Ahoj světe
http: // maven.apache.org


Junit
Junit
3.8.1
test


Soubor jar můžete vygenerovat pomocí následujícího příkazu:

$ mvn balíček
[INFO] Hledání projektů…
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Budování helloworldu 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- plugin maven-resources: 2.6: resources (default-resources) @ helloworld ---
[UPOZORNĚNÍ] Použití kódování platformy (ve skutečnosti UTF-8) ke kopírování filtrovaných zdrojů, tj.E.
build je závislý na platformě!
[INFO] přeskočit neexistující resourceDirectory / Users / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / src / main / resources
[INFO]
[INFO] --- plugin maven-compiler: 3.1: compile (default-compile) @ helloworld ---
[INFO] Zjištěné změny - překompilování modulu!
[UPOZORNĚNÍ] Nebylo nastaveno kódování souborů pomocí kódování platformy UTF-8, tj.E. stavět je
závislé na platformě!
[INFO] Kompilace 1 zdrojového souboru do / Users / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / cíl / třídy
[INFO]
[INFO] --- plugin maven-resources: 2.6: testResources (default-testResources) @
Ahoj světe ---
[UPOZORNĚNÍ] Použití kódování platformy (ve skutečnosti UTF-8) ke kopírování filtrovaných zdrojů, tj.E.
build je závislý na platformě!
[INFO] přeskočit neexistující resourceDirectory / Users / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / src / test / zdroje
[INFO]
[INFO] --- plugin maven-compiler: 3.1: testCompile (default-testCompile) @ helloworld ---
[INFO] Zjištěné změny - překompilování modulu!
[UPOZORNĚNÍ] Nebylo nastaveno kódování souborů pomocí kódování platformy UTF-8, tj.E. stavět je
závislé na platformě!
[INFO] Kompilace 1 zdrojového souboru do / Users / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / target / test-classes
[INFO]
[INFO] --- maven-surefire-plugin: 2.12.4: test (default-test) @ helloworld ---
[INFO] Surefire report adresář: / Users / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / cíl /
jisté zprávy o ohni
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Běžící com.Jméno společnosti.Ahoj světe.AppTest
Provedené testy: 1, selhání: 0, chyby: 0, přeskočení: 0, uplynulý čas: 0.014 s
Výsledek :
Provedené testy: 1, selhání: 0, chyby: 0, přeskočení: 0
[INFO]
[INFO] --- maven-jar-plugin: 2.4: jar (default-jar) @ helloworld ---
[INFO] Stavební nádoba: / Users / zak / _work / LearnBuildScripts / LearnMaven / helloworld / target /
helloworld-1.0-SNAPSHOT.sklenice
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Celkový čas: 5.624 s
[INFO] Hotovo v: 2018-01-27T00: 11: 10-08: 00
[INFO] Konečná paměť: 16M / 114M
[INFO] ------------------------------------------------------------------------

Soubor jar můžete spustit takto:

$ java -cp target / helloworld-1.0-SNAPSHOT.jar com.Jméno společnosti.Ahoj světe.Aplikace
Ahoj světe!

Soubor jar se vloží do cílové složky.

Gradle

Gradle kombinuje sílu Ant a Maven. První verze Gradle byla vydána v roce 2012. Došlo k rychlému přijetí. Google jej aktuálně používá pro OS Android.

Místo XML používá Gradle jazyk Groovy. Výsledkem je, že vytváření skriptů v Gradle se snadněji zapisuje a čte. Zpočátku používala Ivy pro správu závislostí, ale nyní používá vlastní modul závislostí.

Profesionálové

Nevýhody

Příklad gradle

Zde můžete nainstalovat Gradle. Jakmile nastavíte Gradle ve své cestě, můžete to zkontrolovat pomocí:

$ gradle - verze
------------------------------------------------------------
Stupeň 4.5
------------------------------------------------------------
Čas sestavení: 2018-01-24 17:04:52 UTC
Revize: 77d0ec90636f43669dc794ca17ef80dd65457bec
Groovy: 2.4.12
Ant: Apache Ant (TM) verze 1.9.9 sestaveno 2. února 2017
JVM: 1.8.0_74 (Oracle Corporation 25.74-b02)
OS: Mac OS X 10.11.6 x86_64

Dále vytvořte následující adresářovou strukturu:

Ahoj světe
| - sestavení.gradle
'- src
| - hlavní
'- java
'-- Ahoj světe
'-- Ahoj světe.Jáva

Pro helloworld.java vložila kód z příkladu Ant. A pro stavění.gradle vložte následující kód:

použít plugin: 'java'
verze = '1.0 '
repozitáře
mavenCentral ()

závislosti
testCompile group: 'junit', name: 'junit', version: '4.12 '

Chcete-li se podívat na všechny dostupné příkazy, můžete použít příkaz „gradle tasks -all“. Gradle automaticky vyzvedne pluginy, které určíte v sestavení.soubor gradle a zobrazí vám další úkoly, které jsou díky pluginům k dispozici.

Sestavení můžete získat spuštěním:

$ gradle jar
BUILD ÚSPĚŠNÝ za 1 s
2 proveditelné úkoly: 2 provedeny

Svou sklenici můžete spustit takto:

$ java -cp build / libs / helloworld-1.0.jar helloworld
Ahoj světe!

Soubor jar je vložen do složky build / libs.

Závěr

Mezi nástroji pro sestavení může být Ant užitečný pro menší projekty, zatímco Maven je lepší pro zajištění toho, aby všichni vývojáři dodržovali stejná pravidla. Gradle je nejnovější nástroj, který poskytuje největší flexibilitu.

Reference:

Recenze bezdrátové myši Microsoft Sculpt Touch
Nedávno jsem četl o Microsoft Sculpt Touch bezdrátová myš a rozhodl se ji koupit. Po chvíli používání jsem se rozhodl se s ním podělit o své zkušenost...
Trackpad a ukazatel myši AppyMouse na obrazovce pro tablety Windows
Uživatelé tabletů často postrádají ukazatel myši, zejména když obvykle používají notebooky. Dotykové smartphony a tablety mají mnoho výhod a jediným o...
Střední tlačítko myši nefunguje ve Windows 10
The prostřední tlačítko myši pomáhá procházet dlouhé webové stránky a obrazovky se spoustou dat. Pokud se to zastaví, budete nakonec používat klávesni...