Java

Skudra vs Maven vs Gradle

Skudra vs Maven vs Gradle

Pareizā veidošanas rīka izvēle: Ant vs Maven vs Gradle

Programmatūras izstrādes laikā izstrādātājiem atkal un atkal jāatjauno viens un tas pats kods. Viņi bieži mēģina izmantot bash skriptus vai citas skriptu valodas, lai automatizētu uzdevumu. Tomēr ir pieejami būvēšanas rīki, kas ir piemērotāki būvju automatizācijai. Galvenie veidošanas rīki ir:

Izpētīsim rīkus, lai uzzinātu vairāk.

Apache Skudra ar Ivy

Apache Ant ir Java balstīts komandrindas rīks, kas XML failus izmanto, lai definētu būvēšanas skriptus. To galvenokārt izmanto Java būvējumos, bet to var izmantot arī C / C ++ izstrādei. Iebūvētie uzdevumi nodrošina veidus, kā apkopot, apkopot, pārbaudīt un palaist lietojumprogrammas. Lietotāji var arī izveidot paši savus antlibus, lai uzlabotu Ant funkcionalitāti. Apache Ivy ir atkarības pārvaldības rīks, kas viegli integrējas ar Ant, lai nodrošinātu stabilāku ekosistēmu. Skudru attīstība sākās 2000. gadā.

Plusi

Cons

Skudra ar Ivy piemēru

Šeit varat instalēt jaunāko Ant. Jums ir jālejupielādē zip, jāizvērš un jāievieto mape bin jūsu ceļā. Lai pārbaudītu, vai Ant ir pareizi instalēts, varat izmantot šo komandu:

$ ant -versija
Apache Ant (TM) 1. versija.10.1 sastādīts 2017. gada 2. februārī

Kad esat instalējis Ant, varat lejupielādēt jaunāko Ivy jar un ievietot to lib mapē Ant direktorijā.

Pēc Ant instalēšanas izveidojiet mapes helloworld un helloworld / src. Ievietojiet src mapē src.java fails ar kodu:

/ ***************************
Izdrukā "Sveika pasaule!"
**************************** /
sabiedrības klases kolēģis
public static void main (String [] args)
Sistēma.ārā.println ("Sveika pasaule!");

Tagad mapē helloworld izveidojiet būvējumu.xml fails ar šādu kodu:
























Tajā pašā kolēģu mapē izveidojiet efejas.xml fails ar šādu kodu:






Direktoriju struktūrai vajadzētu izskatīties šādi:

Sveika pasaule
| - veidot.xml
| - efeja.xml
'- src
'-- Sveika pasaule.java

Tagad jūs varat palaist būvniecību ar komandu:

$ skudras burka

Veiksmīgai būvēšanai jānodrošina šāda izeja:

$ skudras burka
Buildfile: / Lietotāji / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml
atrisināt:
[efeja: izgūt] :: Apache Ivy 2.4.0 - 20141213170938 :: http: // ant.apache.org / efeja / ::
[ivy: retrieve] :: ielādes iestatījumi :: url = jar: file: / Users / zak / BuildTools / ANT / apache
-skudra-1.10.1 / lib / efeja-2.4.0.burka!/ org / apache / ivy / core / settings / ivysettings.xml
[efeja: izgūt] :: atkarību atrisināšana :: org.apache # helloworld; [aizsargāts pa e-pastu]
MacBook-Air.vietējais
[efeja: izgūt] konf.: [noklusējums]
[efeja: izgūt] atrada junit # junit; 4.12 publiski
[efeja: izgūt] atrasta org.hamcrest # hamcrest-core; 1.3 publiski
[efeja: izgūt] :: izšķirtspējas ziņojums :: atrisināt 397 ms :: artefakti dl 15 ms
---------------------------------------------------------------------
| | moduļi || artefakti |
| konf | numurs | meklēt | atcelt | izlikts || numurs | pazemināts |
---------------------------------------------------------------------
| noklusējums | 2 | 0 | 0 | 0 || 4 | 0 |
---------------------------------------------------------------------
[efeja: ielādēt] :: izgūst :: org.apache # kolēģis
[efeja: izgūt] konf.: [noklusējums]
[efeja: izgūt] 0 artefakti nokopēti, 4 jau izgūti (0 KB / 39 ms)
sastādīt:
[mkdir] Izveidots dir: / Lietotāji / zak / _work / LearnBuildScripts / LearnANT / helloworld / build /
klases
[javac] / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml: 22: brīdinājums:
'includeeantruntime' netika iestatīts, pēc noklusējuma tiek veidots.sysclasspath = pēdējais; iestatīts uz nepatiesu
atkārtojamām būvēm
[javac] 1 avota faila apkopošana vietnē / Users / zak / _work / LearnBuildScripts / LearnANT /
kolēģu pasaule / būvēt / klases
burka:
[mkdir] Izveidots dir: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin
[jar] Celtniecības trauks: / Lietotāji / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin /
Sveika pasaule.burka
VEICIET veiksmīgi
Kopējais laiks: 6 sekundes

Jūs varat izmēģināt jar failu šādi:

$ java -cp build / bin / helloworld.burku kolēģis
Sveika pasaule!

Mēs esam definējuši jar failu, kas jāievieto mapē build / bin. Veidošanas laikā mapes tiek izveidotas. Skudru burciņu komanda būvē izsauc burkas mērķi.xml.

Maven

Maven tika izstrādāts, lai atrisinātu problēmas, ar kurām saskaras skudru bāzes skripti. Tā glabāja XML failus, taču organizācijai bija atšķirīga pieeja. In Ant, izstrādātājiem ir jāizveido visi uzdevumi. Maven samazina uzdevumu izveidi, ieviešot stingrākus kodu organizēšanas standartus. Tā rezultātā ir vieglāk sākt darbu ar standarta projektiem.

Tas arī ieviesa atkarības lejupielādes, kas atviegloja attīstību. Pirms Ivy ieviešanas Ant, lietotājiem bija jāpārvalda atkarības lokāli. Maven vispirms pieņēma atkarības pārvaldības filozofiju.

Tomēr Mavens stingrie standarti apgrūtina pielāgotu veidošanas skriptu rakstīšanu. Ar rīku ir viegli strādāt, ja vien projekts ievēro stingros standartus.

Plusi

Cons

Maven piemērs

Šeit varat lejupielādēt jaunāko Maven. Instalāciju varat pārbaudīt šādi:

$ mvn - versija
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T00: 58: 13-07: 00)
Maven mājas: / Lietotāji / zak / BuildTools / Maven / apache-maven-3.5.2
Java versija: 1.8.0_74, pārdevējs: Oracle Corporation
Java mājas lapa: / Library / Java / JavaVirtualMachines / jdk1.8.0_74.jdk / Saturs / Sākums / jre
Noklusējuma lokalizācija: en_US, platformas kodējums: UTF-8
OS nosaukums: "mac os x", versija: "10.11.6 ", arka:" x86_64 ", saime:" mac "

Izveidojiet mapi Helloworld un ģenerējiet projektu ar šādu komandu:

$ mvn arhetips: ģenerēt -DgroupId = com.Kompānijas nosaukums.helloworld -DartifactId = helloworld
-DarchetypeArtifactId = maven-archetype-quickstart -DinteractiveMode = nepatiesa

Tam vajadzētu izveidot mapes struktūru un ģenerēt izvadi, kas izskatās šādi:

[INFO] Notiek projektu meklēšana ..
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Maven Stub projekta veidošana (bez POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> spraudnis maven-archetype: 3.0.0: ģenerēt (noklusējums-cli)> ģenerēt-avotus
@ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.0.0:generate (default-cli) < generate-sources
@ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- spraudnis maven-archetype: 3.0.0: ģenerēt (noklusējums-cli) @ standalone-pom ---
[INFO] Projekta ģenerēšana pakešrežīmā
[INFO] ----------------------------------------------------------------------------
[INFO] Projekta izveidošanai no Old (1.x) Arhetips:
maven-archetype-quickstart: 1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parametrs: basedir, vērtība: / Users / zak / _work / LearnBuildScripts / LearnMaven
[INFO] Parametrs: pakete, vērtība: kom.Kompānijas nosaukums.Sveika pasaule
[INFO] Parametrs: groupId, vērtība: kom.Kompānijas nosaukums.Sveika pasaule
[INFORMĀCIJA] Parametrs: artifactId, vērtība: helloworld
[INFO] Parametrs: packageName, Value: com.Kompānijas nosaukums.Sveika pasaule
[INFO] Parametrs: versija, vērtība: 1.0-SNAPSHOT
[INFO] projekts izveidots no Old (1.x) Arhetips direktorijā: / Lietotāji / zak / _work /
LearnBuildScripts / LearnMaven / helloworld
[INFO] ------------------------------------------------------------------------
[INFORMĀCIJA] VEICIET panākumus
[INFO] ------------------------------------------------------------------------
[INFO] Kopējais laiks: 8.602 s
[INFO] Pabeigts: 2018-01-27T00: 05: 37-08: 00
[INFO] Galīgā atmiņa: 15M / 152M
[INFO] ------------------------------------------------------------------------

Mapju struktūrai vajadzētu izskatīties šādi:

Sveika pasaule
| - pom.xml
'- src
| - galvenais
| '- java
| '- com
| '-- Kompānijas nosaukums
| '-- Sveika pasaule
| "- App.java
'-- pārbaude
'- java
'- com
'-- Kompānijas nosaukums
'-- Sveika pasaule
'- AppTest.java

Pom.xml satur būvēšanas konfigurācijas. Iekšpusē pom.xml kods izskatās šādi:

xsi: schemaLocation = "http: // maven.apache.org / POM / 4.0.0 http: // maven.apache.org / maven-v4_0
_0.xsd ">
4.0.0
com.Kompānijas nosaukums.Sveika pasaule
Sveika pasaule
burka
1.0-SNAPSHOT
Sveika pasaule
http: // maven.apache.org


junit
junit
3.8.1
pārbaude


Burka failu var ģenerēt, izmantojot šādu komandu:

$ mvn pakete
[INFO] Notiek projektu meklēšana ..
[INFO]
[INFO] ------------------------------------------------------------------------
[INFORMĀCIJA] Apkārtējās pasaules celtniecība 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- spraudnis maven-resources: 2.6: resursi (noklusējuma resursi) @ helloworld ---
[BRĪDINĀJUMS] Izmantojot platformas kodēšanu (faktiski UTF-8) filtrētu resursu kopēšanai, t.e.
būvējums ir atkarīgs no platformas!
[INFO] izlaist neesošu resourceDirectory / Users / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / src / main / resources
[INFO]
[INFO] --- spraudnis maven-compiler: 3.1: kompilēt (noklusējuma sastādīt) @ helloworld ---
[INFO] Noteiktas izmaiņas - moduļa atkārtota kompilēšana!
[BRĪDINĀJUMS] Failu kodēšana nav iestatīta, izmantojot platformas kodējumu UTF-8, t.e. būvēt ir
atkarīga no platformas!
[INFO] 1 avota faila sastādīšana mapē / Users / zak / _work / LearnBuildScripts / LearnMaven /
kolēģis / mērķis / klases
[INFO]
[INFO] --- spraudnis maven-resources: 2.6: testResources (noklusējuma-testResources) @
Sveika pasaule ---
[BRĪDINĀJUMS] Izmantojot platformas kodēšanu (faktiski UTF-8) filtrētu resursu kopēšanai, t.e.
būvējums ir atkarīgs no platformas!
[INFO] izlaist neesošu resourceDirectory / Users / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / src / test / resursi
[INFO]
[INFO] --- spraudnis maven-compiler: 3.1: testCompile (noklusējuma testCompile) @ helloworld ---
[INFO] Noteiktas izmaiņas - moduļa atkārtota kompilēšana!
[BRĪDINĀJUMS] Failu kodēšana nav iestatīta, izmantojot platformas kodējumu UTF-8, t.e. būvēt ir
atkarīgs no platformas!
[INFO] 1 avota faila sastādīšana mapē / Users / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / target / test-klases
[INFO]
[INFO] --- spraudnis maven-surefire: 2.12.4: tests (noklusējuma tests) @ helloworld ---
[INFO] Surefire ziņojumu katalogs: / Users / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / target /
surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Skriešana com.Kompānijas nosaukums.Sveika pasaule.AppTest
Testi veikti: 1, Kļūdas: 0, Kļūdas: 0, Izlaists: 0, Pagājušais laiks: 0.014 sek
Rezultāti:
Testi veikti: 1, Kļūdas: 0, Kļūdas: 0, Izlaisti: 0
[INFO]
[INFO] --- spraudnis maven-jar-spraudnis: 2.4: burka (noklusējuma burka) @ helloworld ---
[INFO] Celtniecības trauks: / Lietotāji / zak / _work / LearnBuildScripts / LearnMaven / helloworld / target /
kolēģis-1.0-SNAPSHOT.burka
[INFO] ------------------------------------------------------------------------
[INFORMĀCIJA] VEICIET panākumus
[INFO] ------------------------------------------------------------------------
[INFO] Kopējais laiks: 5.624 s
[INFO] Pabeigts: 2018-01-27T00: 11: 10-08: 00
[INFO] Galīgā atmiņa: 16M / 114M
[INFO] ------------------------------------------------------------------------

Burka failu var palaist šādi:

$ java -cp target / helloworld-1.0-SNAPSHOT.jar com.Kompānijas nosaukums.Sveika pasaule.App
Sveika pasaule!

Burka fails tiek ievietots mērķa mapē.

Gradle

Gradle apvieno Ant un Maven spēku. Pirmā Gradle versija tika izlaista 2012. gadā. Tā ir ātri pieņemta. Pašlaik Google to izmanto operētājsistēmai Android OS.

XML vietā Gradle izmanto Groovy valodu. Tā rezultātā Gradle veidot skriptus ir vieglāk rakstīt un lasīt. Sākotnēji tas izmantoja Ivy atkarības pārvaldībai, bet tagad izmanto savu atkarības dzinēju.

Plusi

Cons

Gradle piemērs

Jūs varat instalēt Gradle šeit. Kad esat iestatījis Gradle savā ceļā, varat to pārbaudīt:

$ gradle --versija
------------------------------------------------------------
4. pakāpiens.5
------------------------------------------------------------
Izveides laiks: 2018-01-24 17:04:52 UTC
Pārskatīšana: 77d0ec90636f43669dc794ca17ef80dd65457bec
Groovy: 2.4.12
Skudra: Apache Ant (TM) versija 1.9.9 sastādīts 2017. gada 2. februārī
JVM: 1.8.0_74 (Oracle Corporation 25.74-b02)
OS: Mac OS X 10.11.6 x86_64

Pēc tam izveidojiet šādu direktorijas struktūru:

Sveika pasaule
| - veidot.gradle
'- src
| - galvenais
'- java
'-- Sveika pasaule
'-- Sveika pasaule.java

Kolēģim.java ielika kodu no Ant piemēra. Un būvniecībai.gradle ievietojiet šādu kodu:

piemērot spraudni: 'java'
versija = '1.0 '
krātuves
mavenCentral ()

atkarības
testCompile grupa: 'junit', nosaukums: 'junit', versija: '4.12 '

Varat izmantot komandu “gradle task-all”, lai apskatītu visas pieejamās komandas. Gradle automātiski uzņem spraudņus, kurus norādījāt būvējumā.gradle failu un parāda papildu uzdevumus, kas pieejami spraudņu dēļ.

Veidojumu var iegūt, palaižot:

$ gradle jar
VEICIET veiksmīgi 1 sekunžu laikā
2 veicami uzdevumi: 2 izpildīti

Jūs varat palaist savu burku šādi:

$ java -cp build / libs / helloworld-1.0.burku kolēģis
Sveika pasaule!

Burka fails tiek ievietots mapē build / libs.

Secinājums

Starp veidošanas rīkiem Ant var būt noderīgs mazākiem projektiem, savukārt Maven ir labāks, lai pārliecinātos, ka visi izstrādātāji ievēro vienus un tos pašus noteikumus. Gradle ir jaunākais rīks, kas nodrošina vislielāko elastību.

Atsauces:

Vidējā peles poga nedarbojas sistēmā Windows 10
The peles vidējā poga palīdz jums ritināt garas tīmekļa lapas un ekrānus ar lielu datu daudzumu. Ja tas apstājas, jūs galu galā izmantosiet tastatūru,...
Kā nomainīt peles kreiso un labo pogu operētājsistēmā Windows 10
Tas ir diezgan normāli, ka visas datora peles ierīces ir ergonomiski izstrādātas lietotājiem ar labo roku. Bet ir pieejamas peles ierīces, kas ir īpaš...
Atdariniet peles klikšķus, virzot kursoru, izmantojot operētājsistēmā Windows 10 bezklikšķu peli
Peles vai tastatūras lietošana nepareizā pozā, ja to lieto pārmērīgi daudz, var izraisīt daudz veselības problēmu, tostarp spriedzi, karpālā kanāla si...