„Java“

Skruzdė prieš Maveną ir Gradle'ą

Skruzdė prieš Maveną ir Gradle'ą

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:

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ž"

Minusai

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ų stiklainis

Sė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ų pasaulis
Labas 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ž"

Minusai

Maveno pavyzdys

Naujausią „Maven“ galite atsisiųsti iš čia. Diegimą galite patikrinti taip:

$ mvn - versija
Apache 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:

xsi: schemaLocation = "http: // maven.apache.org / POM / 4.0.0 http: // maven.apache.org / maven-v4_0
_0.xsd ">
4.0.0
com.įmonės pavadinimas.Labas pasauli
Labas pasauli
stiklainiukas
1.0-SNAPSHOT
Labas pasauli
http: // maven.apache.org


junit
junit
3.8.1
testas


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.Program
Labas 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ž"

Minusai

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 stiklainis
STEBĖ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ų pasaulis
Labas 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:

5 populiariausi „Linux“ skirtų ergonomiškų kompiuterinių pelių produktai
Ar ilgalaikis kompiuterio naudojimas sukelia riešo ar pirštų skausmą?? Ar jūs kenčiate nuo sąnarių standumo ir nuolat turite paspausti rankas? Ar jauč...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Peržiūrėkite pelės mygtukus skirtingai programinei įrangai naudodami „X-Mouse Button Control“
Galbūt jums reikia įrankio, kuris galėtų pakeisti jūsų pelės valdymą kiekvienoje jūsų naudojamoje programoje. Tokiu atveju galite išbandyti programą, ...