Jáva

Ant vs Maven vs Gradle

Ant vs Maven vs Gradle

A megfelelő összeállítási eszköz kiválasztása: Ant vs Maven vs Gradle

A szoftverfejlesztés során a fejlesztőknek ugyanazt a kódot kell újra és újra felépíteniük. Gyakran próbálnak bash vagy más szkript nyelveket használni a feladat automatizálásához. Vannak azonban olyan buildeszközök, amelyek alkalmasabbak a build automatizálására. Az uralkodó építési eszközök a következők:

Vizsgáljuk meg az eszközöket, hogy többet tudjunk meg.

Apache Ant Ivyval

Az Apache Ant egy Java-alapú parancssori eszköz, amely XML fájlokat használ az építési parancsfájlok meghatározásához. Főleg Java építésekhez használják, de C / C ++ fejlesztéshez is. A beépített feladatok lehetővé teszik a szoftveralkalmazások összeállítását, összeállítását, tesztelését és futtatását. A felhasználók saját AntLib-eket is létrehozhatnak az Ant funkcionalitásának javítása érdekében. Az Apache Ivy egy függőségkezelő eszköz, amely könnyen integrálható az Ant-val, hogy erősebb ökoszisztémát nyújtson. A Hangya fejlesztése 2000-ben kezdődött.

Előnyök

Hátrányok

Hangya Ivy példával

A legújabb Ant-t innen telepítheti. Töltse le a zip-t, bontsa ki és helyezze a bin mappát az útvonalába. A következő paranccsal ellenőrizheti, hogy az Ant megfelelően van-e telepítve:

$ hangya -verzió
Apache Ant (TM) 1. verzió.10.1 összeállítva 2017. február 2-án

Miután telepítette az Ant programot, letöltheti a legújabb Ivy jar-t, és beteheti azt a lib mappába az Ant könyvtárban.

Az Ant telepítése után hozzon létre mappákat helloworld és helloworld / src. Az src mappába tegye a helloworld-t.java fájl a következő kóddal:

/ ***************************
Kiírja a "Hello World!"
**************************** /
nyilvános osztály helloworld
public static void main (String [] érvel)
Rendszer.ki.println ("Hello Világ!");

Most a helloworld mappában hozzon létre egy buildet.xml fájl a következő kóddal:
























És ugyanabban a helloworld mappában hozza létre a borostyánt.xml fájl a következő kóddal:






A könyvtárszerkezetnek így kell kinéznie:

Helló Világ
| - épít.xml
| - borostyán.xml
'- src
'-- Helló Világ.Jáva

Most a következő paranccsal futtathatja az építést:

$ hangya tégely

A sikeres összeállításnak ilyen kimenetet kell nyújtania:

$ hangya tégely
Buildfile: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml
elhatározás:
[ivy: retrieve] :: Apache Ivy 2.4.0 - 20141213170938 :: http: // ant.apache.org / borostyán / ::
[ivy: retrieve] :: betöltési beállítások :: url = jar: file: / Users / zak / BuildTools / ANT / apache
-hangya-1.10.1 / lib / borostyán-2.4.0.befőttes üveg!/ org / apache / borostyán / core / settings / ivysettings.xml
[ivy: retrieve] :: függőségek megoldása :: org.apache # helloworld; [e-mail védett]
MacBook Air.helyi
[ivy: retrieve] confs: [alapértelmezett]
[ivy: retrieve] talált junit # junit; 4.12 nyilvánosan
[ivy: retrieve] megtalált org.hamcrest # hamcrest-core; 1.3 nyilvánosan
[ivy: retrieve] :: megoldási jelentés :: resolut 397ms :: műtárgyak dl 15ms
---------------------------------------------------------------------
| | modulok || leletek |
| konf | szám | keresés | elavult | kilakoltatott || szám | elavult |
---------------------------------------------------------------------
| alapértelmezett | 2 | 0 | 0 | 0 || 4 | 0 |
---------------------------------------------------------------------
[ivy: retrieve] :: visszakeresés :: org.apache # helloworld
[ivy: retrieve] confs: [alapértelmezett]
[ivy: retrieve] 0 műtárgy másolva, 4 már letöltve (0kB / 39ms)
összeállítás:
[mkdir] Létrehozta a dir: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build /
osztályok
[javac] / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml: 22: figyelmeztetés:
Az 'includeeantruntime' nem volt beállítva, alapértelmezés szerint az épít.sysclasspath = utolsó; hamisra állítva
megismételhető összeállításokhoz
[javac] 1 forrásfájl fordítása a / Users / zak / _work / LearnBuildScripts / LearnANT / könyvtárba
helloworld / build / osztályok
befőttes üveg:
[mkdir] Létrehozva: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin
[jar] Építési üveg: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin /
Helló Világ.befőttes üveg
SIKERES ÉPÍTÉS
Teljes idő: 6 másodperc

A jar fájlt így próbálhatja ki:

$ java -cp build / bin / helloworld.jar helloworld
Helló Világ!

Meghatároztuk a jar / file fájlt a build / bin mappába. A mappák a létrehozás során jönnek létre. A hangya jar parancs felhívja a jar célpontot a buildben.xml.

Maven

A Maven-t azért fejlesztették ki, hogy megoldja az Ant-alapú szkriptek problémáit. Megtartotta az XML fájlokat, de más megközelítést alkalmazott a szervezéssel kapcsolatban. A Hangyában a fejlesztőknek meg kell hozniuk az összes feladatot. Maven csökkenti a feladat létrehozását azáltal, hogy szigorúbb szabványokat alkalmaz a kód rendezéséhez. Ennek eredményeként könnyebb elkezdeni a szokásos projekteket.

Függőségi letöltéseket is bevezetett, amelyek megkönnyítették a fejlesztést. Az Ivy Ant-ban való bevezetése előtt a felhasználóknak helyben kellett kezelniük a függőségeket. Maven először a függőségkezelési filozófiát alkalmazta.

A szigorú Mavens szabványok azonban megnehezítik az egyedi összeállítású szkriptek írását. Az eszközzel könnyen lehet dolgozni, amennyiben a projekt megfelel a szigorú előírásoknak.

Előnyök

Hátrányok

Maven példa

A legfrissebb Maven innen tölthető le. A telepítést így ellenőrizheti:

$ mvn --verzió
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T00: 58: 13-07: 00)
Maven home: / Users / zak / BuildTools / Maven / apache-maven-3.5.2
Java verzió: 1.8.0_74, szállító: Oracle Corporation
Java home: / Library / Java / JavaVirtualMachines / jdk1.8.0_74.jdk / Tartalom / Főoldal / jre
Alapértelmezett területi beállítás: en_US, platformkódolás: UTF-8
Operációs rendszer neve: "mac os x", verzió: "10.11.6 ", arch:" x86_64 ", család:" mac "

Hozzon létre egy helloworld mappát, és hozzon létre egy projektet a következő paranccsal:

$ mvn archetípus: generál -DgroupId = com.Cégnév.helloworld -DartifactId = helloworld
-DarchetypeArtifactId = maven-archetype-quickstart -DinteractiveMode = hamis

Létre kell hoznia a mappaszerkezetet, és létre kell hoznia az így kinéző kimenetet:

[INFO] Projektek keresése ..
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Maven Stub Project építése (POM nélkül) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin: 3.0.0: generál (alapértelmezett-cli)> generál-források
@ önálló-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.0.0:generate (default-cli) < generate-sources
@ önálló-pom <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin: 3.0.0: generál (alapértelmezett-cli) @ önálló-pom ---
[INFO] Projekt generálása kötegelt módban
[INFO] ----------------------------------------------------------------------------
[INFO] A következő paraméterek használata a régi (1.x) Archetípus:
maven-archetype-quickstart: 1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Paraméter: basedir, Érték: / Users / zak / _work / LearnBuildScripts / LearnMaven
[INFO] Paraméter: csomag, Érték: com.Cégnév.Helló Világ
[INFO] Paraméter: groupId, Érték: com.Cégnév.Helló Világ
[INFO] Paraméter: artifactId, Érték: helloworld
[INFO] Paraméter: packageName, Érték: com.Cégnév.Helló Világ
[INFO] Paraméter: verzió, Érték: 1.0-SNAPSHOT
[INFO] projekt a Régi (1.x) Archetípus a következőben: / Users / zak / _work /
LearnBuildScripts / LearnMaven / helloworld
[INFO] ------------------------------------------------------------------------
[INFO] SIKER ÉPÍTÉSE
[INFO] ------------------------------------------------------------------------
[INFO] Teljes idő: 8.602 s
[INFO] Befejezés dátuma: 2018-01-27T00: 05: 37-08: 00
[INFO] Végső memória: 15M / 152M
[INFO] ------------------------------------------------------------------------

A mappaszerkezetnek így kell kinéznie:

Helló Világ
| - pom.xml
'- src
| - fő
| '- java
| '- com
| '-- Cégnév
| '-- Helló Világ
| '- App.Jáva
'- teszt
'- java
'- com
'-- Cégnév
'-- Helló Világ
'- AppTest.Jáva

A pom.Az xml tartalmazza a build konfigurációkat. Bent a pom.xml a kód így néz ki:

xsi: schemaLocation = "http: // maven.apache.org / POM / 4.0.0 http: // maven.apache.org / maven-v4_0
_0.xsd ">
4.0.0
com.Cégnév.Helló Világ
Helló Világ
befőttes üveg
1.0-SNAPSHOT
Helló Világ
http: // maven.apache.org


junit
junit
3.8.1
teszt


A jar fájlt a következő paranccsal állíthatja elő:

$ mvn csomag
[INFO] Projektek keresése ..
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Helloworld építése 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin: 2.6: erőforrások (alapértelmezett erőforrások) @ helloworld ---
[FIGYELEM] Platformkódolás (valójában UTF-8) használata szűrt erőforrások másolásához, azaz.e.
a build platformfüggő!
[INFO] kihagyja a nem létező resourceDirectory / Users / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / src / main / resources
[INFO]
[INFO] --- maven-compiler-plugin: 3.1: fordítás (alapértelmezett fordítás) @ helloworld ---
[INFO] Változások észlelve - a modul újrafordítása!
[FIGYELEM] A fájlkódolás nincs beállítva, az UTF-8 platformkódolást használva, azaz.e. épít
platformfüggő!
[INFO] 1 forrásfájl fordítása a / Users / zak / _work / LearnBuildScripts / LearnMaven / könyvtárba
helloworld / target / osztályok
[INFO]
[INFO] --- maven-resources-plugin: 2.6: testResources (alapértelmezett-testResources) @
Helló Világ ---
[FIGYELEM] Platformkódolás (valójában UTF-8) használata a szűrt erőforrások másolásához, azaz.e.
a build platformfüggő!
[INFO] kihagyja a nem létező resourceDirectory / Users / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / src / test / resources
[INFO]
[INFO] --- maven-compiler-plugin: 3.1: testCompile (alapértelmezett-testCompile) @ helloworld ---
[INFO] Változások észlelve - a modul újrafordítása!
[FIGYELEM] A fájlkódolás nincs beállítva, az UTF-8 platformkódolást használva, azaz.e. épít
platformfüggő!
[INFO] 1 forrásfájl fordítása a / Users / zak / _work / LearnBuildScripts / LearnMaven könyvtárba
/ helloworld / target / teszt-osztályok
[INFO]
[INFO] --- maven-surefire-plugin: 2.12.4: teszt (alapértelmezett teszt) @ helloworld ---
[INFO] Surefire jelentés könyvtár: / Users / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / target /
biztos-jelentések
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Futó com.Cégnév.Helló Világ.AppTest
Futtatott tesztek: 1, hibák: 0, hibák: 0, kihagyott: 0, eltelt idő: 0.014 mp
Eredmények :
Futtatott tesztek: 1, hibák: 0, hibák: 0, kihagyott: 0
[INFO]
[INFO] --- maven-jar-plugin: 2.4: jar (alapértelmezett-jar) @ helloworld ---
[INFO] Építőedény: / Users / zak / _work / LearnBuildScripts / LearnMaven / helloworld / target /
helloworld-1.0-SNAPSHOT.befőttes üveg
[INFO] ------------------------------------------------------------------------
[INFO] SIKER ÉPÍTÉSE
[INFO] ------------------------------------------------------------------------
[INFO] Teljes idő: 5.624 s
[INFO] Befejezés dátuma: 2018-01-27T00: 11: 10-08: 00
[INFO] Végső memória: 16M / 114M
[INFO] ------------------------------------------------------------------------

A jar fájlt így futtathatja:

$ java -cp target / helloworld-1.0-SNAPSHOT.jar com.Cégnév.Helló Világ.App
Helló Világ!

A jar fájl a célmappába kerül.

Gradle

Gradle ötvözi Ant és Maven erejét. A Gradle első verziója 2012-ben jelent meg. Gyors elfogadása volt. A Google jelenleg az Android operációs rendszerhez használja.

Az XML helyett a Gradle a Groovy nyelvet használja. Ennek eredményeként a Gradle-ben létrehozott szkripteket könnyebb írni és olvasni. Eleinte az Ivy-t használta függőségkezeléshez, de most a saját függőségi motorját használja.

Előnyök

Hátrányok

Gradle példa

A Gradle-t innen telepítheti. Miután beállította a Gradle-t az útvonalán, ellenőrizheti:

$ gradle --verzió
------------------------------------------------------------
4. fokozat.5
------------------------------------------------------------
Építés ideje: 2018-01-24 17:04:52 UTC
Felülvizsgálat: 77d0ec90636f43669dc794ca17ef80dd65457bec
Groovy: 2.4.12
Hangya: Apache Ant (TM) 1. verzió.9.9 összeállítva 2017. február 2-án
JVM: 1.8.0_74 (Oracle Corporation 25.74-b02)
Operációs rendszer: Mac OS X 10.11.6 x86_64

Ezután hozza létre a következő könyvtárstruktúrát:

Helló Világ
| - épít.gradle
'- src
| - fő
'- java
'-- Helló Világ
'-- Helló Világ.Jáva

A fõvilágnak.java feltette a kódot a Hangya példából. És építkezéshez.gradle írja be a következő kódot:

plugin alkalmazása: 'java'
verzió = '1.0 '
adattárak
mavenCentral ()

függőségek
testCompile csoport: 'junit', név: 'junit', verzió: '4.12 '

A „gradle task -all” paranccsal megnézheti az összes elérhető parancsot. A Gradle automatikusan felveszi a buildben megadott bővítményeket.gradle fájlt, és megmutatja a beépülő modulok miatt elérhető extra feladatokat.

Az összeállítást a

$ gradle jar
SIKERES ÉPÍTÉS 1 másodperc alatt
2 végrehajtható feladat: 2 végrehajtva

Az edényt így futtathatja:

$ java -cp build / libs / helloworld-1.0.jar helloworld
Helló Világ!

A jar fájl a build / libs mappába kerül.

Következtetés

A buildeszközök közül az Ant hasznos lehet kisebb projekteknél, míg a Maven jobban biztosítja, hogy minden fejlesztő ugyanazokat a szabályokat kövesse. A Gradle a legújabb eszköz, amely a legnagyobb rugalmasságot biztosítja.

Referenciák:

Csata a Wesnothért 1.13.6 Megjelent a fejlesztés
Csata a Wesnothért 1.13.A múlt hónapban megjelent 6 a hatodik fejlesztési kiadás az 1-ben.13.x sorozat, és számos fejlesztést hajt végre, nevezetesen ...
A League of Legends telepítése az Ubuntu 14-re.04
Ha rajongsz a League of Legendsért, akkor ez egy lehetőség arra, hogy teszteld a League of Legends játékot. Ne feledje, hogy a LOL a PlayOnLinux rends...
Telepítse a legújabb OpenRA stratégiai játékot az Ubuntu Linux rendszerre
Az OpenRA egy ingyenes / ingyenes valós idejű stratégiai játékmotor, amely újjáépíti a korai Westwood játékokat, mint például a klasszikus Command & C...