Tinkamo kūrimo įrankio pasirinkimas: skruzdė prieš Maveną ir Gradle'ą
Kurdami programinę įrangą, kūrėjai turi vėl ir vėl atkurti tą patį kodą. Jie dažnai bando naudoti „bash“ scenarijus ar kitas scenarijų kalbas, kad automatizuotų užduotį. Tačiau yra prieinamų kūrimo įrankių, tinkamesnių kūrimo automatizavimui. Vyraujantys kūrimo įrankiai yra šie:
- Apache Skruzdė su Ivy
- Mavenas
- Greideris
Panagrinėkime įrankius, kad sužinotume daugiau.
Apache Skruzdė su Ivy
„Apache Ant“ yra „Java“ pagrindu sukurtas komandinės eilutės įrankis, kuris naudoja XML failus kurdami scenarijus. Tai daugiausia naudojama „Java“ versijoms, tačiau ji taip pat gali būti naudojama C / C ++ kūrimui. Įtaisytosios užduotys suteikia būdų kaupti, surinkti, išbandyti ir paleisti programinės įrangos programas. Vartotojai taip pat gali sukurti savo „antlib“, kad pagerintų „Ant“ funkcionalumą. „Apache Ivy“ yra priklausomybės valdymo įrankis, lengvai integruojamas su „Ant“, kad būtų sukurta tvirtesnė ekosistema. Skruzdė buvo pradėta kurti 2000 m.
Argumentai "už"
- Geresnė viso kūrimo proceso kontrolė
- Pakankamai lankstus darbui su bet kokiu darbo procesu
Minusai
- XML pagrindu sukurti failai gali išaugti dideli ir nepalaikomi
- Kuriant scenarijus reikia daug laiko ir išteklių
- IDE integraciją sunku pasiekti
Skruzdė su Ivy pavyzdžiu
Čia galite įdiegti naujausią skruzdėlę. Turite atsisiųsti ZIP, išplėsti ir įdėti šiukšliadėžės aplanką į savo kelią. Norėdami patikrinti, ar „Ant“ tinkamai įdiegta, galite naudoti šią komandą:
$ ant -versija„Apache Ant“ (TM) 1 versija.10.1 sudaryta 2017 m. Vasario 2 d
Įdiegę „Ant“, galite atsisiųsti naujausią „Ivy“ indelį ir įdėti jį į „lib“ aplanką „Ant“ kataloge.
Įdiegę „Ant“, sukurkite aplankus „helloworld“ ir „helloworld / src“. Viduje src aplanke įdėkite kolegą.„Java“ failas su kodu:
/ ***************************Išspausdinama „Hello World!"
****************************
visuomenės klasės kolegos
public static void main (String [] argumentuoja)
Sistema.išėjo.println ("Sveikas pasaulis!");
Dabar aplanke helloworld sukurkite komponavimo versiją.xml failas su šiuo kodu:
Tame pačiame kolegų aplanke sukurkite gebenę.xml failas su šiuo kodu:
Katalogų struktūra turėtų atrodyti taip:
Labas pasauli| - statyti.xml
| - gebenė.xml
- src
'-- Labas pasauli.java
Dabar galite paleisti komponavimą naudodami komandą:
$ skruzdžių stiklainisSėkmingas kūrimas turėtų suteikti tokį rezultatą:
$ skruzdžių stiklainis„Buildfile“: / Vartotojai / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml
išspręsti:
[gebenė: atgauti] :: Apache Ivy 2.4.0 - 20141213170938 :: http: // skruzdė.apache.org / gebenė / ::
[ivy: retrieve] :: pakrovimo nustatymai :: url = jar: file: / Users / zak / BuildTools / ANT / apache
-skruzdė-1.10.1 / lib / gebenė-2.4.0.stiklainiukas!/ org / apache / ivy / core / settings / ivysettings.xml
[gebenė: atgauti] :: išspręsti priklausomybes :: org.apache # helloworld; [el. pašto saugoma]
„MacBook-Air“.vietinis
[ivy: retrieve] confs: [numatytasis]
[ivy: retrieve] rado junit # junit; 4.12 viešai
[gebenė: atgauti] rasta org.hamcrest # hamcrest-core; 1.3 viešai
[gebenė: gauti] :: rezoliucijos ataskaita :: išspręsti 397 ms :: artefaktai dl 15 ms
---------------------------------------------------------------------
| | moduliai || dirbiniai |
| konf numeris | paieška | pasmerkta | iškeldinta || skaičius | pasenęs |
---------------------------------------------------------------------
| numatytasis | 2 | 0 | 0 | 0 || 4 | 0 |
---------------------------------------------------------------------
[gebenė: atgauti] :: retrieving :: org.apache # kolegos
[ivy: retrieve] confs: [numatytasis]
[ivy: retrieve] Nukopijuota 0 artefaktų, 4 jau gauta (0kB / 39ms)
sudaryti:
[mkdir] Sukurtas dir: / Vartotojai / zak / _work / LearnBuildScripts / LearnANT / helloworld / build /
klasės
[javac] / Vartotojai / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml: 22: įspėjimas:
'Includeantruntime' nebuvo nustatytas, numatytasis statymas.sysclasspath = paskutinis; nustatyta klaidinga
pakartotiniams kūriniams
[javac] 1 šaltinio failo rinkimas į / Users / zak / _work / LearnBuildScripts / LearnANT /
kolegos pasaulis / statyti / klases
stiklainis:
[mkdir] Sukurtas dir: / Vartotojai / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin
[jar] Pastato indelis: / Vartotojai / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin /
Labas pasauli.stiklainiukas
PASTATYKITE SĖKMINGĄ
Bendras laikas: 6 sekundės
Galite išbandyti jar failą taip:
$ java -cp build / bin / helloworld.stiklainis kolegų pasaulisLabas pasauli!
Mes apibrėžėme jar failą, kurį reikia įdėti į aplanką build / bin. Aplankai kuriami kuriant. Skruzdžių indelio komanda pakviečia stiklainio taikinį statinyje.xml.
Mavenas
„Maven“ buvo sukurtas siekiant išspręsti problemas, su kuriomis susiduria skruzdėmis pagrįstas scenarijus. Ji saugojo XML failus, tačiau laikėsi kitokio požiūrio į organizavimą. Skruzdėlyje kūrėjai turi sukurti visas užduotis. Mavenas sumažina užduočių kūrimą įgyvendindamas griežtesnius kodo tvarkymo standartus. Todėl lengviau pradėti kurti standartinius projektus.
Ji taip pat pristatė priklausomybės atsisiuntimus, kurie palengvino kūrimą. Prieš įvedant „Ivy Ant“, vartotojai turėjo valdyti priklausomybes vietoje. Mavenas pirmiausia pritaikė priklausomybės valdymo filosofiją.
Tačiau dėl griežtų „Mavens“ standartų sunku rašyti nestandartinių versijų scenarijus. Su įrankiu lengva dirbti tol, kol projektas atitinka griežtus standartus.
Argumentai "už"
- Automatiniai priklausomybės atsisiuntimai
- Visos priklausomybės automatiškai įrašomos į šaltinio valdymą kaip „Maven“ scenarijų dalis
- Standartizuoja ir supaprastina kūrimo procesą
- Lengvai integruojamas su IDE ir CI / CD sistemomis
Minusai
- Nėra lankstus kuriant pasirinktines darbo eigas
- Stačios mokymosi kreivės ir procesą naujokams sunku suprasti
- Laikas užima daug laiko kuriant statybos problemas ir naujų bibliotekų integravimą
- Nėra gerai su keliomis tos pačios priklausomybės versijomis
Maveno pavyzdys
Naujausią „Maven“ galite atsisiųsti iš čia. Diegimą galite patikrinti taip:
$ mvn - versijaApache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T00: 58: 13-07: 00)
„Maven home“: / Vartotojai / zak / „BuildTools“ / „Maven“ / „apache-maven-3“.5.2
„Java“ versija: 1.8.0_74, pardavėjas: „Oracle Corporation“
„Java“ namai: / Library / Java / JavaVirtualMachines / jdk1.8.0_74.jdk / Turinys / Pagrindinis / jre
Numatytoji lokalė: en_US, platformos kodavimas: UTF-8
OS pavadinimas: „mac os x“, versija: „10.11.6 ", arka:" x86_64 ", šeima:" mac "
Sukurkite kolegų aplanką ir sugeneruokite projektą naudodami šią komandą:
$ mvn archetipas: generuoti -DgroupId = com.įmonės pavadinimas.kolegos-pasaulis -DartifactId = kolegos-pasaulis-DarchetypeArtifactId = maven-archetype-quickstart -DinteractiveMode = false
Ji turėtų sukurti aplanko struktūrą ir sugeneruoti išvestį, kuri atrodo taip:
[INFO] Ieškoma projektų ..[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] „Maven Stub“ projekto kūrimas (Nr. POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> „maven-archetype-plugin“: 3.0.0: generuoti (numatytasis-cli)> generuoti-šaltinius
@ 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: generuoti (numatytasis-cli) @ standalone-pom ---
[INFO] Projektas generuojamas paketiniu režimu
[INFO] ----------------------------------------------------------------------------
[INFO] Naudojant šiuos parametrus kuriant projektą iš „Old“ (1.x) Archetipas:
„maven-archetype-quickstart“: 1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parametras: basedir, Reikšmė: / Vartotojai / zak / _work / LearnBuildScripts / LearnMaven
[INFO] Parametras: paketas, vertė: kom.įmonės pavadinimas.Labas pasauli
[INFO] Parametras: groupId, reikšmė: kom.įmonės pavadinimas.Labas pasauli
[INFORMACIJA] Parametras: artifactId, vertė: kolegos pasaulis
[INFO] Parametras: packageName, Value: com.įmonės pavadinimas.Labas pasauli
[INFO] Parametras: versija, vertė: 1.0-SNAPSHOT
[INFO] projektas sukurtas iš „Old“ (1.x) Archetipas dir: / Vartotojai / zak / _work /
LearnBuildScripts / LearnMaven / helloworld
[INFO] ------------------------------------------------------------------------
[INFORMACIJA] SUKURTI SĖKMESS
[INFO] ------------------------------------------------------------------------
[INFO] Bendras laikas: 8.602 s
[INFO] Baigta: 2018-01-27T00: 05: 37-08: 00
[INFO] Galutinė atmintis: 15M / 152M
[INFO] ------------------------------------------------------------------------
Aplankų struktūra turėtų atrodyti taip:
Labas pasauli| - pom.xml
- src
| - pagrindinis
| '- java
| „- com
| "- įmonės pavadinimas
| '-- Labas pasauli
| „- Programa.java
'- testas
'- java
„- com
"- įmonės pavadinimas
'-- Labas pasauli
„-„ AppTest “.java
Pom.xml yra komponavimo konfigūracijos. Viduje pom.xml kodas atrodo taip:
_0.xsd ">
JAR failą galite sugeneruoti naudodami šią komandą:
$ mvn paketas[INFO] Ieškoma projektų ..
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Statyti kolegas 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- „maven-resources-plugin“: 2.6: ištekliai (numatytieji ištekliai) @ helloworld ---
[ĮSPĖJIMAS] Naudojant platformos kodavimą (iš tikrųjų UTF-8) filtruotiems ištekliams kopijuoti, t.e.
komponavimas priklauso nuo platformos!
[INFO] praleisti neegzistuojantį „ResourceDirectory“ / „Users / zak“ / _work / LearnBuildScripts / LearnMaven /
helloworld / src / main / resources
[INFO]
[INFO] --- „maven-compiler-plugin“: 3.1: kompiliuokite (numatytasis kompiliavimas) @ helloworld ---
[INFO] Aptikti pakeitimai - modulio kompiliavimas!
[ĮSPĖJIMAS] Failų kodavimas nenustatytas, naudojant platformos kodavimą UTF-8, t.e. statyti yra
priklauso nuo platformos!
[INFO] 1 šaltinio failo kompiliavimas į / Users / zak / _work / LearnBuildScripts / LearnMaven /
kolegos pasaulis / tikslas / klasės
[INFO]
[INFO] --- „maven-resources-plugin“: 2.6: testResources (numatytasis-testResources) @
Labas pasauli ---
[ĮSPĖJIMAS] Naudojant platformos kodavimą (iš tikrųjų UTF-8) filtruotiems ištekliams kopijuoti, t.e.
komponavimas priklauso nuo platformos!
[INFO] praleisti neegzistuojantį „ResourceDirectory“ / „Users / zak“ / _work / LearnBuildScripts / LearnMaven /
helloworld / src / test / resources
[INFO]
[INFO] --- „maven-compiler-plugin“: 3.1: testCompile (numatytasis testCompile) @ helloworld ---
[INFO] Aptikti pakeitimai - modulio kompiliavimas!
[ĮSPĖJIMAS] Failų kodavimas nenustatytas, naudojant platformos kodavimą UTF-8, t.e. statyti yra
priklauso nuo platformos!
[INFO] 1 šaltinio failo kompiliavimas į / Users / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / target / test-class
[INFO]
[INFO] --- „maven-surefire-plugin“: 2.12.4: testas (numatytasis testas) @ helloworld ---
[INFO] „Surefire“ ataskaitų katalogas: / Vartotojai / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / target /
patikimos ataskaitos
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Veikia kom.įmonės pavadinimas.Labas pasauli.„AppTest“
Testai paleisti: 1, gedimai: 0, klaidos: 0, praleisti: 0, praėjęs laikas: 0.014 sek
Rezultatai:
Testai vykdomi: 1, gedimai: 0, klaidos: 0, praleisti: 0
[INFO]
[INFO] --- „maven-jar-plugin“: 2.4: stiklainis (numatytasis indelis) @ helloworld ---
[INFO] Statybinis indelis: / Vartotojai / zak / _work / LearnBuildScripts / LearnMaven / helloworld / target /
kolegos-1.0-SNAPSHOT.stiklainiukas
[INFO] ------------------------------------------------------------------------
[INFORMACIJA] SUKURTI SĖKMESS
[INFO] ------------------------------------------------------------------------
[INFO] Bendras laikas: 5.624 s
[INFO] Baigta: 2018-01-27T00: 11: 10-08: 00
[INFO] Galutinė atmintis: 16M / 114M
[INFO] ------------------------------------------------------------------------
Galite paleisti stiklainio failą taip:
$ java -cp target / helloworld-1.0-SNAPSHOT.stiklainis com.įmonės pavadinimas.Labas pasauli.ProgramLabas pasauli!
JAR failas dedamas į tikslinį aplanką.
Greideris
„Gradle“ apjungia „Ant“ ir „Maven“ jėgą. Pirmoji „Gradle“ versija buvo išleista 2012 m. Tai greitai priėmė. „Google“ šiuo metu jį naudoja „Android“ OS.
Vietoj XML „Gradle“ naudoja „Groovy“ kalbą. Todėl „Gradle“ kurti scenarijus yra lengviau rašyti ir skaityti. Iš pradžių jis priklausomybės valdymui naudojo „Ivy“, tačiau dabar naudoja savo priklausomybės variklį.
Argumentai "už"
- Užtikrina standartizavimą, tuo pačiu išlaikant lankstumą
- Lengva skaityti ir rašyti kurti scenarijus
- Geriau tvarkyti kelias priklausomybių versijas
- Geba valdyti kelias programavimo kalbas ir technologijas
- Aktyvi bendruomenė, padedanti sukurti įrankį
- „Gradle DSL“ (domenui būdinga kalba) tai paprasta konfigūravimo struktūra
- „Gradle“ teikia našumo patobulinimus, naudojant palaipsniui, kaupimo talpyklą ir „Gradle Daemon“
Minusai
- IDE integracija nėra tokia gera kaip Maveno
Greičio pavyzdys
„Gradle“ galite įdiegti čia. Kai savo kelyje nustatysite „Gradle“, galėsite tai patikrinti:
$ gradle --versija------------------------------------------------------------
4 greideris.5
------------------------------------------------------------
Pastatymo laikas: 2018-01-24 17:04:52 UTC
Peržiūra: 77d0ec90636f43669dc794ca17ef80dd65457bec
Groovy: 2.4.12
Skruzdė: „Apache Ant“ (TM) 1 versija.9.9 sudaryta 2017 m. Vasario 2 d
JVM: 1.8.0_74 („Oracle Corporation“ 25.74-b02)
OS: „Mac OS X 10“.11.6 x86_64
Tada sukurkite šią katalogo struktūrą:
Labas pasauli| - statyti.gradlas
- src
| - pagrindinis
'- java
'-- Labas pasauli
'-- Labas pasauli.java
Dėl kolegų pasaulio.java įdėjo kodą iš „Ant“ pavyzdžio. Ir statybai.„gradle“ įveskite šį kodą:
taikyti papildinį: „java“versija = '1.0 '
saugyklos
„mavenCentral“ ()
priklausomybės
testCompile group: „junit“, pavadinimas: „junit“, versija: „4.12 '
Norėdami peržiūrėti visas galimas komandas, galite naudoti komandą „gradle task-all“. „Gradle“ automatiškai paima įskiepius, kuriuos nurodėte versijoje.gradle failą ir parodo papildomas užduotis, kurias galima atlikti dėl papildinių.
Versiją galite gauti paleisdami:
$ gradle stiklainisSTEBĖKITE SĖKMINGAI per 1 sek
2 vykdomos užduotys: 2 vykdomos
Savo indelį galite paleisti taip:
$ java -cp build / libs / helloworld-1.0.stiklainis kolegų pasaulisLabas pasauli!
JAR failas dedamas į aplanką build / libs.
Išvada
Tarp kūrimo įrankių „Ant“ gali būti naudinga mažesniems projektams, o „Maven“ geriau užtikrinti, kad visi kūrėjai laikytųsi tų pačių taisyklių. „Gradle“ yra naujausias įrankis, suteikiantis didžiausią lankstumą.
Nuorodos:
- http: // skruzdė.apache.org /
- http: // skruzdė.apache.org / gebenė /
- https: // maven.apache.org /
- https: // gradle.org /
- http: // makble.com / gradle-junit-helloworld-example
- https: // pavyzdžiai.javacodegeeks.com / core-java / gradle / gradle-hello-world-tutorial /
- https: // gradle.org / maven-vs-gradle /
- https: // maven.apache.org / gidai / darbo pradžia / per penkias minutes.HTML
- https: // stackoverflow.com / questions / 20755437 / java-build-tools-ant-vs-maven
- https: // technologijų pokalbiai.com / 2014/06/18 / „build-tools“ /
- https: // www.kvoros.com / Kas yra „Maven-versus-Ant“ privalumai ir trūkumai, kaip „Java“ kūrimo įrankiai