Java

Mrav vs Maven vs Gradle

Mrav vs Maven vs Gradle

Odabir pravog alata za izgradnju: Ant protiv Maven vs Gradle

Tijekom razvoja softvera, programeri moraju iznova i iznova graditi isti kod. Često pokušavaju koristiti bash skripte ili druge skriptne jezike za automatizaciju zadatka. Međutim, postoje dostupni alati za izgradnju koji su prikladniji za automatizaciju izrade. Prevladavajući alati za izradu su:

Istražimo alate kako bismo saznali više.

Apački mrav s bršljanom

Apache Ant je alat naredbenog retka zasnovan na Javi koji koristi XML datoteke za definiranje skripti gradnje. Uglavnom se koristi za Java gradnje, ali može se koristiti i za razvoj C / C ++. Ugrađeni zadaci pružaju načine za kompajliranje, sastavljanje, testiranje i pokretanje softverskih aplikacija. Korisnici također mogu stvoriti vlastite "antlibs" kako bi poboljšali funkcionalnost Ant. Apache Ivy alat je za upravljanje ovisnostima koji se lako integrira s Antom kako bi pružio robusniji ekosustav. Razvoj Ant započeo je 2000. godine.

Pros

Protiv

Primjer mrava s bršljanom

Ovdje možete instalirati najnoviji Ant. Morate preuzeti zip, proširiti i staviti mapu bin na put. Pomoću sljedeće naredbe možete provjeriti je li Ant pravilno instaliran:

$ mrava -verzija
Apache Ant (TM) verzija 1.10.1 sastavljen 2. veljače 2017

Nakon što instalirate Ant, možete preuzeti najnoviju staklenku Ivy i staviti je u mapu lib unutar direktorija Ant.

Nakon što instalirate Ant, stvorite mape helloworld i helloworld / src. Unutar mape src stavite helloworld.java datoteka s kodom:

/ **************************
Ispisuje "Hello World!"
*************************** /
javni razred helloworld
javna statička void glavna (String [] args)
Sustav.van.println ("Pozdrav svijetu!");

Sada u mapi helloworld stvorite gradnju.xml datoteku sa sljedećim kodom:
























I u istoj mapi helloworld stvorite bršljan.xml datoteku sa sljedećim kodom:






Struktura direktorija trebala bi izgledati ovako:

Pozdrav svijete
| - graditi.xml
| - bršljan.xml
'- src
'-- Pozdrav svijete.Java

Sada možete pokrenuti izgradnju naredbom:

staklenka od mrava

Uspješna gradnja trebala bi pružiti ovakve rezultate:

staklenka od mrava
Datoteka gradnje: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml
odlučnost:
[bršljan: dohvat] :: Apache Ivy 2.4.0 - 20141213170938 :: http: // ant.apache.org / bršljan / ::
[ivy: dohvatiti] :: postavke učitavanja :: url = jar: datoteka: / Users / zak / BuildTools / ANT / apache
-mrav-1.10.1 / lib / bršljan-2.4.0.staklenka!/ org / apache / ivy / core / settings / ivysettings.xml
[bršljan: dohvat] :: rješavanje ovisnosti :: org.apache # helloworld; [e-pošta zaštićena]
MacBook-Air.lokalno
[bršljan: dohvat] confs: [zadano]
[bršljan: dohvat] pronađen junit # junit; 4.12 u javnosti
[bršljan: dohvat] pronađena org.hamcrest # hamcrest-core; 1.3 u javnosti
[bršljan: dohvatiti] :: izvještaj o razlučivanju :: riješiti 397ms :: artefakti dl 15ms
---------------------------------------------------------------------
| | moduli || artefakti |
| conf | broj | pretraga | dwnlded | deložiran || broj | dwnlded |
---------------------------------------------------------------------
| zadano | 2 | 0 | 0 | 0 || 4 | 0 |
---------------------------------------------------------------------
[bršljan: dohvat] :: dohvaćanje :: org.apache # helloworld
[bršljan: dohvat] confs: [zadano]
[ivy: retrieve] 0 kopiranih artefakata, 4 već preuzeta (0kB / 39ms)
sastaviti:
[mkdir] Izrađen direktorij: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build /
razreda
[javac] / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml: 22: upozorenje:
'includeantruntime' nije postavljeno, a zadano je za izgradnju.sysclasspath = zadnji; postavljeno na false
za ponovljive gradnje
[javac] Priprema 1 izvorne datoteke u / Users / zak / _work / LearnBuildScripts / LearnANT /
helloworld / build / klase
tegla:
[mkdir] Izrađen direktorij: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin
[jar] Izrada jar: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin /
Pozdrav svijete.staklenka
IZGRADITI USPJEŠNO
Ukupno vrijeme: 6 sekundi

Datoteku jar možete isprobati ovako:

$ java -cp build / bin / helloworld.tegla helloworld
Pozdrav svijete!

Definirali smo jar datoteku koja će se staviti u mapu build / bin. Mape se stvaraju tijekom gradnje. Naredba mrav jar poziva izgradnju cilja jar u izradi.xml.

Maven

Maven je razvijen za rješavanje problema s kojima se suočavaju skripte na bazi Ant. Čuvao je XML datoteke, ali je zauzeo drugačiji pristup organizaciji. U Antu programeri moraju stvoriti sve zadatke. Maven smanjuje stvaranje zadataka primjenom jačih standarda za organiziranje koda. Kao rezultat toga, lakše je započeti sa standardnim projektima.

Također je uveo preuzimanja ovisnosti koja su olakšala razvoj. Prije uvođenja Ivya u Ant, korisnici su morali lokalno upravljati ovisnostima. Maven je prvo usvojio filozofiju upravljanja ovisnostima.

Međutim, Mavensovi strogi standardi otežavaju pisanje prilagođenih skripti za izgradnju. Alat je jednostavan za rad ukoliko projekt slijedi stroge standarde.

Pros

Protiv

Primjer Mavena

Najnoviji Maven možete preuzeti ovdje. Instalaciju možete provjeriti ovako:

$ mvn --verzija
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T00: 58: 13-07: 00)
Početna stranica Mavena: / Users / zak / BuildTools / Maven / apache-maven-3.5.2
Inačica Java: 1.8.0_74, dobavljač: Oracle Corporation
Java početna stranica: / Library / Java / JavaVirtualMachines / jdk1.8.0_74.jdk / Sadržaj / Početna / jre
Zadana lokalizacija: en_US, kodiranje platforme: UTF-8
Naziv OS-a: "mac os x", inačica: "10.11.6 ", luk:" x86_64 ", obitelj:" mac "

Stvorite mapu helloworld i generirajte projekt pomoću sljedeće naredbe:

$ mvn arhetip: generiraj -DgroupId = com.naziv tvrtke.helloworld -DartifactId = helloworld
-DarchetypeArtifactId = maven-archetype-quickstart -DinteractiveMode = false

Trebao bi stvoriti strukturu mape i generirati izlaz koji izgleda ovako:

[INFO] Traženje projekata ..
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Izgradnja stuba Maven (bez POM-a) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> dodatak za maven-archetype: 3.0.0: generiraj (default-cli)> generiraj-izvore
@ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.0.0:generate (default-cli) < generate-sources
@ samostalno-pom <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin: 3.0.0: generiraj (default-cli) @ standalone-pom ---
[INFO] Generiranje projekta u batch načinu
[INFO] ----------------------------------------------------------------------------
[INFO] Korištenje sljedećih parametara za stvaranje projekta iz Starog (1.x) Arhetip:
maven-arhetype-quickstart: 1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parametar: basedir, Vrijednost: / Users / zak / _work / LearnBuildScripts / LearnMaven
[INFO] Parametar: paket, Vrijednost: com.naziv tvrtke.Pozdrav svijete
[INFO] Parametar: groupId, Vrijednost: com.naziv tvrtke.Pozdrav svijete
[INFO] Parametar: artifactId, Vrijednost: helloworld
[INFO] Parametar: packageName, Vrijednost: com.naziv tvrtke.Pozdrav svijete
[INFO] Parametar: verzija, vrijednost: 1.0-SNAPSHOT
[INFO] projekt izrađen iz Old (1.x) Arhetip u direktoriju: / Users / zak / _work /
LearnBuildScripts / LearnMaven / helloworld
[INFO] ------------------------------------------------------------------------
[INFO] IZGRADITI USPJEH
[INFO] ------------------------------------------------------------------------
[INFO] Ukupno vrijeme: 8.602 s
[INFO] Završeno u: 2018-01-27T00: 05: 37-08: 00
[INFO] Konačna memorija: 15M / 152M
[INFO] ------------------------------------------------------------------------

Struktura mape trebala bi izgledati ovako:

Pozdrav svijete
| - pom.xml
'- src
| - glavni
| '- java
| '- com
| '- naziv tvrtke
| '-- Pozdrav svijete
| '- App.Java
'- test
'- java
'- com
'- naziv tvrtke
'-- Pozdrav svijete
'- AppTest.Java

Pom.xml sadrži konfiguracije gradnje. Unutar pom.xml kod izgleda ovako:

xsi: schemaLocation = "http: // maven.apache.org / POM / 4.0.0 http: // maven.apache.org / maven-v4_0
_0.xsd ">
4.0.0
com.naziv tvrtke.Pozdrav svijete
Pozdrav svijete
staklenka
1.0-SNAPSHOT
Pozdrav svijete
http: // maven.apache.org


junit
junit
3.8.1
test


Datoteku jar možete generirati pomoću sljedeće naredbe:

$ mvn paket
[INFO] Traženje projekata ..
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Zgrada helloworld 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- dodatak za maven-resources: 2.6: resursi (zadani resursi) @ helloworld ---
[UPOZORENJE] Korištenje kodiranja platforme (zapravo UTF-8) za kopiranje filtriranih resursa, tj.e.
build ovisi o platformi!
[INFO] preskoči nepostojeći resourceDirectory / Users / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / src / main / resources
[INFO]
[INFO] --- dodatak za maven-compiler: 3.1: kompajliranje (zadana kompilacija) @ helloworld ---
[INFO] Otkrivene promjene - ponovno sastavljanje modula!
[UPOZORENJE] Kodiranje datoteka nije postavljeno, pomoću kodiranja platforme UTF-8, tj.e. graditi je
ovisno o platformi!
[INFO] Sastavljanje 1 izvorne datoteke u / Users / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / target / klase
[INFO]
[INFO] --- maven-resources-plugin: 2.6: testResources (zadani-testResources) @
Pozdrav svijete ---
[UPOZORENJE] Korištenje kodiranja platforme (zapravo UTF-8) za kopiranje filtriranih resursa, tj.e.
build ovisi o platformi!
[INFO] preskoči nepostojeći resourceDirectory / Users / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / src / test / resources
[INFO]
[INFO] --- dodatak za maven-compiler: 3.1: testCompile (zadana-testCompile) @ helloworld ---
[INFO] Otkrivene promjene - ponovno sastavljanje modula!
[UPOZORENJE] Kodiranje datoteka nije postavljeno, pomoću kodiranja platforme UTF-8, tj.e. graditi je
ovisno o platformi!
[INFO] Sastavljanje 1 izvorne datoteke u / Users / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / target / test-classes
[INFO]
[INFO] --- maven-surefire-plugin: 2.12.4: test (zadani test) @ helloworld ---
[INFO] Direktorij izvještaja Surefire: / Users / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / target /
izvještaji o sigurnoj vatri
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Trčanje com.naziv tvrtke.Pozdrav svijete.AppTest
Izvršeni testovi: 1, neuspjesi: 0, pogreške: 0, preskočeni: 0, proteklo vrijeme: 0.014 sek
Rezultati:
Izvršeni testovi: 1, neuspjesi: 0, pogreške: 0, preskočeni: 0
[INFO]
[INFO] --- maven-jar-plugin: 2.4: jar (zadana-jar) @ helloworld ---
[INFO] Izrada jar: / Users / zak / _work / LearnBuildScripts / LearnMaven / helloworld / target /
helloworld-1.0-SNAPSHOT.staklenka
[INFO] ------------------------------------------------------------------------
[INFO] IZGRADITI USPJEH
[INFO] ------------------------------------------------------------------------
[INFO] Ukupno vrijeme: 5.624 s
[INFO] Završeno u: 2018-01-27T00: 11: 10-08: 00
[INFO] Konačna memorija: 16M / 114M
[INFO] ------------------------------------------------------------------------

Datoteku jar možete pokrenuti ovako:

$ java -cp cilj / helloworld-1.0-SNAPSHOT.tegla kom.naziv tvrtke.Pozdrav svijete.App
Pozdrav svijete!

Datoteka jar stavlja se u ciljnu mapu.

Gradle

Gradle kombinira snagu Ant i Maven. Prva verzija Gradlea objavljena je 2012. godine. Brzo je usvojeno. Google ga trenutno koristi za Android OS.

Umjesto XML-a, Gradle koristi jezik Groovy. Kao rezultat toga, skripte za izgradnju u Gradleu lakše je pisati i čitati. U početku je koristio Ivy za upravljanje ovisnostima, ali sada koristi vlastiti mehanizam ovisnosti.

Pros

Protiv

Primjer Gradle

Gradle možete instalirati odavde. Jednom kada postavite Gradle na svoj put, možete ga provjeriti:

$ gradle --verzija
------------------------------------------------------------
Gradle 4.5
------------------------------------------------------------
Vrijeme izrade: 2018-01-24 17:04:52 UTC
Revizija: 77d0ec90636f43669dc794ca17ef80dd65457bec
Groovy: 2.4.12
Mrav: Apache Ant (TM) verzija 1.9.9 sastavljeno 2. veljače 2017
JVM: 1.8.0_74 (Oracle Corporation 25.74-b02)
OS: Mac OS X 10.11.6 x86_64

Zatim stvorite sljedeću strukturu direktorija:

Pozdrav svijete
| - graditi.gradle
'- src
| - glavni
'- java
'-- Pozdrav svijete
'-- Pozdrav svijete.Java

Za svijet svijeta.java je stavila kod iz primjera Ant. I za izgradnju.gradle stavite sljedeći kod:

primijeni dodatak: 'java'
inačica = '1.0 '
spremišta
mavenCentral ()

ovisnosti
testCompile grupa: 'junit', naziv: 'junit', inačica: '4.12 '

Pomoću naredbe "gradle zadaci-sve" možete pogledati sve dostupne naredbe. Gradle automatski preuzima dodatke koje navedete u izradi.gradle datoteku i prikazuje vam dodatne zadatke dostupne zbog dodataka.

Izgradnju možete dobiti pokretanjem:

$ gradle tegla
IZGRADITI USPJEŠNO za 1s
2 djelotvorna zadatka: 2 izvršena

Možete pokrenuti svoju teglu ovako:

$ java -cp build / libs / helloworld-1.0.tegla helloworld
Pozdrav svijete!

Datoteka jar stavlja se u mapu build / libs.

Zaključak

Među alatima za izgradnju, Ant može biti koristan za manje projekte, dok je Maven bolji za osiguravanje da svi programeri slijede ista pravila. Gradle je najnoviji alat koji pruža najveću fleksibilnost.

Reference:

WinMouse vam omogućuje prilagodbu i poboljšanje kretanja pokazivača miša na Windows računalu
Ako želite poboljšati zadane funkcije pokazivača miša, upotrijebite besplatni program WinMouse. Dodaje više značajki koje će vam pomoći da na najbolji...
Lijevi gumb miša ne radi u sustavu Windows 10
Ako s prijenosnim računalom ili stolnim računalom koristite namjenski miš, ali lijevi gumb miša ne radi u sustavu Windows 10/8/7 iz nekog razloga evo ...
Pokazivač skače ili se slučajno pomiče dok tipkate u sustavu Windows 10
Ako ustanovite da kursor miša sam skače ili se pomiče automatski, nasumično dok tipkate u Windows prijenosnom računalu ili računalu, neki od ovih prij...