Java

Ant vs Maven vs Gradle

Ant vs Maven vs Gradle

Õige ehitustööriista valimine: Ant vs Maven vs Gradle

Tarkvaraarenduse käigus peavad arendajad sama koodi ikka ja jälle üles ehitama. Sageli üritatakse ülesande automatiseerimiseks kasutada bashi skripte või muid skriptikeeli. Siiski on saadaval ehitustööriistu, mis on sobilikumad ehituse automatiseerimiseks. Valdavad ehitustööriistad on:

Uurime tööriistu, et rohkem teada saada.

Apache Ant koos Ivyga

Apache Ant on Java-põhine käsurea tööriist, mis kasutab XML-faile ehituskriptide määratlemiseks. Seda kasutatakse peamiselt Java järkude jaoks, kuid seda saab kasutada ka C / C ++ arendamiseks. Sisseehitatud ülesanded pakuvad võimalusi tarkvararakenduste kompileerimiseks, kokkupanekuks, testimiseks ja käitamiseks. Kasutajad saavad Ant'i funktsionaalsuse parandamiseks luua ka oma antlibid. Apache Ivy on sõltuvuse haldamise tööriist, mis integreerub hõlpsasti Antiga, et tagada tugevam ökosüsteem. Sipelga arendamine algas 2000. aastal.

Plussid

Miinused

Sipelgas koos luuderohu näitel

Siit saate installida uusima Ant. Peate ZIP-faili alla laadima, laiendama ja prügikasti kausta oma teele panema. Järgmise käsu abil saate kontrollida, kas Ant on õigesti installitud:

$ ant -versioon
Apache Ant (TM) versioon 1.10.1 koostatud 2. veebruaril 2017

Kui Ant on installitud, saate alla laadida uusima Ivy purgi ja panna selle kataloogi Ant kausta lib.

Kui Ant on installitud, looge kaustad helloworld ja helloworld / src. Pange src kausta sisse helloworld.java fail koodiga:

/ ***************************
Prindib välja "Tere maailm!"
**************************** /
rahvaklassi kaasmaalane
public staatiline void main (String [] args)
Süsteem.välja.println ("Tere maailm!");

Nüüd looge helloworldi kaustas järk.xml-fail järgmise koodiga:
























Ja loo samasse kaasmaailma kausta luuderohi.xml-fail järgmise koodiga:






Kataloogistruktuur peaks välja nägema selline:

Tere, Maailm
| - ehitada.xml
| - luuderohi.xml
'- src
'-- Tere, Maailm.java

Nüüd saate ehitada käivitada käsuga:

$ ant purk

Edukas järk peaks pakkuma sellist väljundit:

$ ant purk
Buildfile: / Kasutajad / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml
lahendama:
[ivy: tooma] :: Apache Ivy 2.4.0 - 20141213170938 :: http: // ant.apache.org / ivy / ::
[ivy: retrieve] :: seadete laadimine :: url = jar: file: / Users / zak / BuildTools / ANT / apache
-ant-1.10.1 / lib / ivy-2.4.0.purk!/ org / apache / ivy / core / settings / ivysettings.xml
[ivy: tooma] :: sõltuvuste lahendamine :: org.apache # helloworld; [meiliga kaitstud]
MacBook-Air.kohalik
[ivy: retrieve] confs: [vaikimisi]
[ivy: tooma] leitud junit # junit; 4.12 avalikult
[ivy: tooma] leitud org.hamcrest # hamcrest-core; 1.3 avalikult
[ivy: tooma] :: lahenduse aruanne :: resoluut 397 ms :: artefaktid dl 15 ms
---------------------------------------------------------------------
| | moodulid || esemed |
| konf | number | otsima | eemaldatud | välja tõstetud || number | dwnlded |
---------------------------------------------------------------------
| vaikimisi | 2 | 0 | 0 | 0 || 4 | 0 |
---------------------------------------------------------------------
[ivy: tooma] :: tooma :: org.apache # kaasmaailm
[ivy: retrieve] confs: [vaikimisi]
[ivy: retrieve] 0 artefakti kopeeritud, 4 juba kätte (0kB / 39ms)
koostama:
[mkdir] Loodud kataloog: / Kasutajad / zak / _work / LearnBuildScripts / LearnANT / helloworld / build /
klassides
[javac] / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml: 22: hoiatus:
'includeeantruntime' ei olnud määratud, vaikimisi ehitati.sysclasspath = viimane; seatud valeks
korduvate järkude jaoks
[javac] 1 lähtefaili koostamine kataloogi / Users / zak / _work / LearnBuildScripts / LearnANT /
kaasmaailm / ehitada / klassid
purk:
[mkdir] Loodud kataloog: / Kasutajad / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin
[purk] Ehituskarp: / Kasutajad / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin /
Tere, Maailm.purk
EHITADA EDUKAT
Kogu aeg: 6 sekundit

Purgifaili saate proovida järgmiselt:

$ java -cp build / bin / helloworld.purgikaaslane
Tere, Maailm!

Oleme määratlenud jar-faili, mis pannakse kausta build / bin. Kaustad luuakse ehitamise ajal. Sipelgapurgi käsk kutsub järk-järgult purgi sihtmärgi.xml.

Maven

Maven töötati välja Ant-põhise skriptimisega seotud probleemide lahendamiseks. See säilitas XML-failid, kuid kasutas korraldamisel teistsugust lähenemist. Antis peavad arendajad looma kõik ülesanded. Maven vähendab ülesande loomist, rakendades koodide korraldamiseks tugevamaid standardeid. Selle tulemusena on lihtsam alustada standardprojektidega.

Samuti tutvustas see sõltuvuse allalaadimist, mis muutis arendamise lihtsamaks. Enne Ivy kasutuselevõttu Antis pidid kasutajad sõltuvusi kohalikult haldama. Maven võttis kõigepealt kasutusele sõltuvuse juhtimise filosoofia.

Kuid Mavensi ranged standardid muudavad kohandatud ehituse skriptide kirjutamise keeruliseks. Tööriistaga on lihtne töötada, kui projekt järgib rangeid standardeid.

Plussid

Miinused

Maven Näide

Uusima Maveni saate alla laadida siit. Installimist saate kontrollida järgmiselt:

$ mvn --versioon
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T00: 58: 13-07: 00)
Maveni kodu: / Kasutajad / zak / BuildTools / Maven / apache-maven-3.5.2
Java versioon: 1.8.0_74, müüja: Oracle Corporation
Java kodu: / Raamatukogu / Java / JavaVirtualMachines / jdk1.8.0_74.jdk / Sisukord / Avaleht / jre
Vaikimisi lokaat: en_US, platvormi kodeering: UTF-8
Operatsioonisüsteemi nimi: "mac os x", versioon: "10.11.6 ", kaar:" x86_64 ", perekond:" mac "

Looge kausta helloworld ja looge projekt järgmise käsuga:

$ mvn arhetüüp: genereeri -DgroupId = com.ettevõtte nimi.helloworld -DartifactId = helloworld
-DarchetypeArtifactId = maven-archetype-quickstart -DinteractiveMode = vale

See peaks looma kaustade struktuuri ja genereerima väljundi, mis näeb välja selline:

[INFO] Projektide otsimine ..
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Maven Stubi projekti ehitamine (POM-i pole) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin: 3.0.0: genereeri (vaikimisi-cli)> genereeri-allikad
@ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.0.0:generate (default-cli) < generate-sources
@ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- maven-arhetüübi pistikprogramm: 3.0.0: genereeri (vaikimisi-cli) @ standalone-pom ---
[INFO] Projekti genereerimine pakkimisrežiimis
[INFO] ----------------------------------------------------------------------------
[INFO] Järgmiste parameetrite kasutamine projekti Vanast (1.x) arhetüüp:
maven-archetype-quickstart: 1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameeter: baseeruväärtus, väärtus: / Kasutajad / zak / _work / LearnBuildScripts / LearnMaven
[INFO] Parameeter: pakett, väärtus: kom.ettevõtte nimi.Tere, Maailm
[INFO] Parameeter: groupId, väärtus: com.ettevõtte nimi.Tere, Maailm
[INFO] Parameeter: artifactId, väärtus: helloworld
[INFO] Parameeter: packageName, Value: com.ettevõtte nimi.Tere, Maailm
[INFO] Parameeter: versioon, väärtus: 1.0-PIKKUS
[INFO] projekt loodud vanast (1.x) Arhetüüp kataloogis: / Kasutajad / zak / _work /
LearnBuildScripts / LearnMaven / helloworld
[INFO] ------------------------------------------------------------------------
[INFO] EHITADA EDUKUST
[INFO] ------------------------------------------------------------------------
[INFO] Kogu aeg: 8.602 s
[INFO] Lõppenud: 2018-01-27T00: 05: 37-08: 00
[INFO] Lõplik mälu: 15M / 152M
[INFO] ------------------------------------------------------------------------

Kaustade struktuur peaks välja nägema selline:

Tere, Maailm
| - pom.xml
'- src
| - peamine
| '- java
| '- com
| '- ettevõtte nimi
| '-- Tere, Maailm
| '- rakendus.java
'- test
'- java
'- com
'- ettevõtte nimi
'-- Tere, Maailm
'- AppTest.java

Pomm.xml sisaldab ehituskonfiguratsioone. Pommi sees.xml näeb kood välja selline:

xsi: schemaLocation = "http: // maven.apache.org / POM / 4.0.0 http: // maven.apache.org / maven-v4_0
_0.xsd ">
4.0.0
com.ettevõtte nimi.Tere, Maailm
Tere, Maailm
purk
1.0-PIKKUS
Tere, Maailm
http: // maven.apache.org


junit
junit
3.8.1
test


JAR-faili saate luua järgmise käsuga:

pakett $ mvn
[INFO] Projektide otsimine ..
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Helloworldi ehitamine 1.0-PIKKUS
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- plugin maven-resources: 2.6: ressursid (vaikeressursid) @ helloworld ---
[HOIATUS] Platvormkodeeringu (tegelikult UTF-8) kasutamine filtreeritud ressursside kopeerimiseks, s.t.e.
ehitada sõltub platvormist!
[INFO] Jätke vahele olemasolev ressursikataloog / Kasutajad / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / src / main / resources
[INFO]
[INFO] --- maven-compiler-plugin: 3.1: kompileerimine (vaikekompileerimine) @ helloworld ---
[INFO] Tuvastatud muudatused - mooduli uuesti kompileerimine!
[HOIATUS] Failikodeering pole seadistatud, kasutades platvormkodeeringut UTF-8, st.e. ehitada on
platvormist sõltuv!
[INFO] 1 lähtefaili koostamine kataloogi / Users / zak / _work / LearnBuildScripts / LearnMaven /
kaasmaailm / sihtmärk / klassid
[INFO]
[INFO] --- plugin maven-resources: 2.6: testResources (vaikimisi testResources) @
Tere, Maailm ---
[HOIATUS] Platvormkodeeringu (tegelikult UTF-8) kasutamine filtreeritud ressursside kopeerimiseks, s.t.e.
ehitada sõltub platvormist!
[INFO] Jätke vahele olemasolev ressursikataloog / Kasutajad / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / src / test / ressursid
[INFO]
[INFO] --- maven-compiler-plugin: 3.1: testCompile (vaikimisi testCompile) @ helloworld ---
[INFO] Tuvastatud muudatused - mooduli uuesti kompileerimine!
[HOIATUS] Failikodeering pole seadistatud, kasutades platvormkodeeringut UTF-8, st.e. ehitada on
platvormist sõltuv!
[INFO] 1 lähtefaili koostamine kataloogi / Users / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / target / test-klassid
[INFO]
[INFO] --- maven-surefire-plugin: 2.12.4: test (vaikimisi test) @ helloworld ---
[INFO] Kindlate aruannete kataloog: / Kasutajad / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / target /
kindlus-teated
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Jooks com.ettevõtte nimi.Tere, Maailm.AppTest
Testid on käivitatud: 1, tõrked: 0, vead: 0, vahele jäetud: 0, kulunud aeg: 0.014 sekundit
Tulemused :
Testid on käivitatud: 1, tõrked: 0, vead: 0, vahele jäetud: 0
[INFO]
[INFO] --- maven-jar-plugin: 2.4: purk (vaikimisi purk) @ helloworld ---
[INFO] Ehituskarp: / Kasutajad / zak / _work / LearnBuildScripts / LearnMaven / helloworld / target /
kaasmaailm-1.0-PIKKUS.purk
[INFO] ------------------------------------------------------------------------
[INFO] EHITADA EDUKUST
[INFO] ------------------------------------------------------------------------
[INFO] Kogu aeg: 5.624 s
[INFO] Lõppenud: 2018-01-27T00: 11: 10-08: 00
[INFO] Lõplik mälu: 16M / 114M
[INFO] ------------------------------------------------------------------------

Võite jar-faili käivitada järgmiselt:

$ java -cp target / helloworld-1.0-PIKKUS.purk com.ettevõtte nimi.Tere, Maailm.Rakendus
Tere, Maailm!

Purgifail pannakse sihtkausta.

Gradle

Gradle ühendab endas Sipelga ja Maveni jõu. Gradle'i esimene versioon ilmus 2012. aastal. See on kiiresti vastu võetud. Google kasutab seda praegu Android OS-i jaoks.

XML-i asemel kasutab Gradle Groovy keelt. Seetõttu on Gradle'is koostatud skripte lihtsam kirjutada ja lugeda. Algselt kasutas ta sõltuvushalduseks Ivy't, kuid kasutab nüüd oma sõltuvusmootorit.

Plussid

Miinused

Gradle'i näide

Gradle'i saate installida siit. Kui olete Gradle'i oma teele seadistanud, saate seda kontrollida:

$ gradle --versioon
------------------------------------------------------------
4. klass.5
------------------------------------------------------------
Ehitamise aeg: 2018-01-24 17:04:52 UTC
Redaktsioon: 77d0ec90636f43669dc794ca17ef80dd65457bec
Groovy: 2.4.12
Sipelgas: Apache Ant (TM) versioon 1.9.9 koostatud 2. veebruaril 2017
JVM: 1.8.0_74 (Oracle Corporation 25.74-b02)
OS: Mac OS X 10.11.6 x86_64

Järgmisena looge järgmine kataloogistruktuur:

Tere, Maailm
| - ehitada.gradle
'- src
| - peamine
'- java
'-- Tere, Maailm
'-- Tere, Maailm.java

Kaasmaailma jaoks.java pani koodi sipelga näitest. Ja ehitamiseks.gradle pani järgmise koodi:

rakendage pistikprogrammi: 'java'
versioon = '1.0 '
hoidlad
mavenCentral ()

sõltuvused
testKompileerige rühm: 'junit', nimi: 'junit', versioon: '4.12 '

Kõigi saadaolevate käskude vaatamiseks võite kasutada käsku „gradle task -all”. Gradle võtab automaatselt üles järjel määratud pluginad.gradle faili ja näitab pistikprogrammide tõttu saadaolevaid lisaülesandeid.

Ehituse saate käivitades:

$ gradle purk
EHITAGE 1 sekundiga edukalt
2 teostatavat ülesannet: 2 täidetud

Võite oma purki käivitada järgmiselt:

$ java -cp build / libs / helloworld-1.0.purgikaaslane
Tere, Maailm!

Jar-fail pannakse kausta build / libs.

Järeldus

Ehitustööriistade hulgas võib Ant olla kasulik väiksemate projektide jaoks, samas kui Maven on parem tagamaks, et kõik arendajad järgivad samu reegleid. Gradle on uusim tööriist, mis pakub kõige rohkem paindlikkust.

Viited:

Installige uusim OpenRA strateegiamäng Ubuntu Linuxi
OpenRA on tasuta / tasuta reaalajas strateegiamängumootor, mis loob uuesti Westwoodi varased mängud nagu klassikaline Command & Conquer: Red Alert. Ja...
Installige Linuxile uusim Dolphin Emulator for Gamecube & Wii
Dolphini emulaator võimaldab teil mängida valitud Gamecube & Wii mänge Linuxi personaalarvutites (PC). Vabalt saadaval oleva ja avatud lähtekoodiga m...
Kuidas kasutada GameConquerori petumootorit Linuxis
Artikkel sisaldab juhendit GameConquerori petumootori kasutamise kohta Linuxis. Paljud kasutajad, kes mängivad Windowsis mänge, kasutavad rakendust „C...