Мрав вс Мавен вс Градле

Ant Vs Maven Vs Gradle



Током развоја софтвера, програмери морају изнова и изнова обнављати исти код. Често покушавају да користе басх скрипте или друге скриптне језике за аутоматизацију задатка. Међутим, доступни су алати за изградњу који су прикладнији за аутоматизацију изградње. Преовлађујући алати за изградњу су:

Хајде да истражимо алате да бисмо сазнали више.







Апач мрав са Иви

Апацхе Ант је алатка командне линије заснована на Јави која користи КСМЛ датотеке за дефинисање скрипти за изградњу. Углавном се користи за Јава верзије, али се може користити и за развој Ц/Ц ++. Уграђени задаци пружају начине за састављање, састављање, тестирање и покретање софтверских апликација. Корисници такође могу створити сопствене антлибове како би побољшали функционалност Ант -а. Апацхе Иви је алат за управљање зависностима који се лако интегрише са Антом како би обезбедио робуснији екосистем. Развој Ант почео је 2000.



Прос



  • Боља контрола над целокупним процесом изградње
  • Довољно флексибилан за рад са било којим радним процесом

Цонс





  • Датотеке за изградњу засноване на КСМЛ -у могу постати велике и неодрживе
  • За одржавање скрипти за изградњу потребно је много времена и ресурса
  • Интеграцију ИДЕ -а је тешко постићи

Пример мрава са Ивијем

Најновији Ант можете инсталирати са овде . Морате да преузмете зип, проширите и ставите фасциклу бин на свој пут. Помоћу следеће команде можете видети да ли је Ант правилно инсталиран:

$ ант-верзија
Апацхе Ант(ТМ)верзија 1.10.1 састављена фебруара2 2017.

Након што инсталирате Ант, можете преузети најновији Иви јар и ставити га у либ фасциклу унутар Ант директоријума.



Након што инсталирате Ант, креирајте фасцикле хелловорлд и хелловорлд/срц. Унутар мапе срц ставите датотеку хелловорлд.јава са кодом:

/ **************************

Штампа „Хелло Ворлд!“

*************************** /

јавности класаЗдраво Свете{

јавности статичан празнинаглавни( Низ []аргс) {
Систем .оут.принтлн('Здраво Свете!');
}

}

Сада у фасцикли хелловорлд креирајте датотеку буилд.кмл са следећим кодом:

кмлнс: бршљан='антлиб: орг.апацхе.иви.ант' име='Здраво Свете' Уобичајено='тегла'>

име='срц.дир' вредност='срц'/>
име='буилд.дир' вредност='изградити'/>
име='цлассес.дир' вредност='$ {буилд.дир}/цлассес'/>
име='ам.дир' вредност='$ {буилд.дир} / бин'/>
име='либ.дир' вредност='либ' />
ид='либ.патх.ид'>
теби='$ {либ.дир}' />
>

име='решити'>
/>
>

име='чист'>
теби='$ {буилд.дир}'/>
>

име='саставити' зависи='решити'>
теби='$ {цлассес.дир}'/>
срцдир='$ {срц.дир}' дестдир='$ {цлассес.дир}' цласспатхреф='либ.патх.ид'/>
>

име='тегла' зависи='саставити'>
теби='$ {бин.дир}'/>
дестфиле='$ {бин.дир}/$ {ант.пројецт.наме} .јар' баседир='$ {цлассес.дир}'/>
>

>

И у истој фасцикли хелловорлд креирајте датотеку иви.кмл са следећим кодом:

верзија='2.0'>
организација='орг.апацхе' модул='Здраво Свете'/>
>
орг='јунит' име='јунит' рев='4.12'/>
>
>

Структура директоријума би требала изгледати овако:

Здраво Свете
|- буилд.кмл
| - иви.кмл
`- срц
`- хелловорлд.јава

Сада можете покренути изградњу помоћу наредбе:

$антјар

Успешна изградња би требало да обезбеди излаз овако:

$ ант јар
Буилдфиле: /Усерс/зак/_ворк/ЛеарнБуилдСцриптс/ЛеарнАНТ/хелловорлд/буилд.кмл

решити:
[иви: ретриеве] :: Апацхе Иви 2.4.0 - 20141213170938 :: хттп://ант.апацхе.орг/иви/ ::
[иви: ретриеве] :: поставке учитавања :: урл = јар: датотека:/Усерс/зак/БуилдТоолс/АНТ/апацхе
-ант-1.10.1/либ/иви-2.4.0.јар! /орг/апацхе/иви/цоре/сеттингс/ивисеттингс.кмл
[иви: ретриеве] :: решавање зависности :: орг.апацхе#хелловорлд; [заштићена е -пошта]
МацБоок-Аир.лоцал
[иви: ретриеве] цонфс: [подразумевано]
[иви: ретриеве] пронађен јунит#јунит; 4.12 у јавности
[иви: ретриеве] фоунд орг.хамцрест#хамцрест-цоре; 1.3 у јавности
[бршљан: преузимање] :: извештај о резолуцији :: решавање 397мс :: артефакти дл 15мс
-------------------------------------------------- -------------------
| | модули || артефакти |
| цонф | број | претрага | двнлдед | исељен || број | двнлдед |
-------------------------------------------------- -------------------
| подразумевано | 2 | 0 | 0 | 0 || 4 | 0 |
-------------------------------------------------- -------------------
[иви: ретриеве] :: преузимање :: орг.апацхе#хелловорлд
[иви: ретриеве] цонфс: [подразумевано]
[иви: ретриеве] 0 артефаката је копирано, 4 већ преузето (0кБ/39мс)

саставити:
[мкдир] Креиран директоријум:/Усерс/зак/_ворк/ЛеарнБуилдСцриптс/ЛеарнАНТ/хелловорлд/буилд/
класе
[јавац] /Усерс/зак/_ворк/ЛеарнБуилдСцриптс/ЛеарнАНТ/хелловорлд/буилд.кмл:22: варнинг:
'инцлудеантрунтиме' није постављено, задана вредност је буилд.сисцласспатх = ласт; постављено на фалсе
за поновљиве грађе
[јавац] Превођење 1 изворне датотеке у/Усерс/зак/_ворк/ЛеарнБуилдСцриптс/ЛеарнАНТ/
хелловорлд/буилд/цлассес

тегла:
[мкдир] Креиран директоријум:/Усерс/зак/_ворк/ЛеарнБуилдСцриптс/ЛеарнАНТ/хелловорлд/буилд/бин
[јар] јар јар за изградњу:/Усерс/зак/_ворк/ЛеарнБуилдСцриптс/ЛеарнАНТ/хелловорлд/буилд/бин/
хелловорлд.јар

ГРАДИТИ УСПЕШНО
Укупно време: 6 секунди

Јар датотеку можете испробати овако:

$ јава -цп буилд/бин/хелловорлд.јарЗдраво Свете
Здраво Свете!

Дефинирали смо јар датотеку за стављање у фолдер буилд/бин. Мапе се стварају током израде. Команда ант јар позива јар јар у буилд.кмл.

Мавен

Мавен је развијен за решавање проблема са којима се суочавају скрипте засноване на мравима. Чувао је КСМЛ датотеке, али је имао другачији приступ организацији. У Анту програмери морају да креирају све задатке. Мавен смањује стварање задатака применом јачих стандарда за организовање кода. Као резултат тога, лакше је започети са стандардним пројектима.

Такође је увео преузимање зависности што је олакшало развој. Пре увођења Иви -а у Ант, корисници су морали локално управљати зависностима. Мавен је прво усвојио филозофију управљања зависностима.

Међутим, строги стандарди Мавенса отежавају писање скрипти за прилагођену израду. Са алатом је лако радити све док пројекат прати строге стандарде.

Прос

  • Аутоматско преузимање зависности
  • Све зависности се аутоматски евидентирају у контроли извора као део Мавен скрипти
  • Стандардизује и поједностављује процес изградње
  • Лако се интегрише са ИДЕ и ЦИ/ЦД системима

Цонс

  • Није флексибилан у креирању прилагођених токова посла
  • Новим почетницима тешко је разумети стрму кривуљу учења и процес
  • Решавање проблема изградње и интеграција нових библиотека захтева много времена
  • Није добро са више верзија исте зависности

Пример Мавен

Најновији Мавен можете преузети са овде . Инсталацију можете проверити на следећи начин:

$ мвн --верзија
Апацхе Мавен 3.5.2(138едд61фд100ец658бфа2д307ц43б76940а5д7д; 2017.-10-18Т00:58:13-07: 00)
Мавен хоме: /Усерс/зак/БуилдТоолс/Мавен/апацхе-мавен-3.5.2
Јава верзија: 1.8.0_74, добављач: Орацле Цорпоратион
Јава хоме: /Либрари/Јава/ЈаваВиртуалМацхинес/јдк1.8.0_74.јдк/Садржај/Почетна/јре
Подразумевана локација: ен_УС, кодирање платформе: УТФ-8
Назив ОС:'мац ос к', верзија:'10 .11.6 ', арх:'к86_64', породица:'мац'

Направите фасциклу хелловорлд и генеришите пројекат помоћу следеће команде:

$ мвн архетип: генерише -ДгроупИд = цом.назив фирме.Здраво Свете-ДартифацтИд = хелловорлд
-ДарцхетипеАртифацтИд = мавен-арцхетипе-куицкстарт -ДинтерацтивеМоде =лажно

Требало би да створи структуру фасцикли и генерише излаз који изгледа овако:

[ИНФО] Скенирање пројеката ...
[ИНФО]
[ИНФО] ----------------------------------------------- -------------------------
[ИНФО] Пројекат изградње Мавен Стуб пројекта (без ПОМ -а) 1
[ИНФО] ----------------------------------------------- -------------------------
[ИНФО]
[ИНФО] >>> мавен-арцхетипе-плугин: 3.0.0: Генерирај (дефаулт-цли)> генериши-изворе
@ стандалоне-пом >>>
[ИНФО]
[ИНФО]<<< maven-archetype-plugin:3.0.0:generate (default-cli) < generate-sources
@ стандалоне-пом<<<
[ИНФО]
[ИНФО]
[ИНФО] --- мавен-арцхетипе-плугин: 3.0.0: генератед (дефаулт-цли) @ стандалоне-пом ---
[ИНФО] Генерисање пројекта у пакетном режиму
[ИНФО] ----------------------------------------------- -----------------------------
[ИНФО] Коришћење следећих параметара за креирање пројекта из старог (1.к) архетипа:
мавен-арцхетипе-куицкстарт: 1.0
[ИНФО] ----------------------------------------------- -----------------------------
[ИНФО] Параметар: баседир, Вредност:/Усерс/зак/_ворк/ЛеарнБуилдСцриптс/ЛеарнМавен
[ИНФО] Параметар: пацкаге, Валуе: цом.цомпанинаме.хелловорлд
[ИНФО] Параметар: гроупИд, Вредност: цом.цомпанинаме.хелловорлд
[ИНФО] Параметар: артифацтИд, Вредност: хелловорлд
[ИНФО] Параметар: пацкагеНаме, Валуе: цом.цомпанинаме.хелловорлд
[ИНФО] Параметар: верзија, Вредност: 1.0-СНАПСХОТ
[ИНФО] пројекат креиран од старог (1.к) архетипа у директоријуму:/Усерс/зак/_ворк/
ЛеарнБуилдСцриптс/ЛеарнМавен/хелловорлд
[ИНФО] ----------------------------------------------- -------------------------
[ИНФО] ИЗГРАДИТЕ УСПЕХ
[ИНФО] ----------------------------------------------- -------------------------
[ИНФО] Укупно време: 8.602 с
[ИНФО] Завршено у: 2018-01-27Т00: 05: 37-08: 00
[ИНФО] Коначна меморија: 15М/152М
[ИНФО] ----------------------------------------------- -------------------------

Структура фасцикли би требала изгледати овако:

Здраво Свете
|- пом.кмл
``- срц
|-- главни
| ``-јава
| ``- са
| ``-- назив фирме
| ``-- Здраво Свете
| ``- Апп.јава
``-тест
``-јава
``- са
``-- назив фирме
``-- Здраво Свете
``- АппТест.јава

Пом.кмл садржи конфигурације за изградњу. Унутар пом.кмл код изгледа овако:

кмлнс='хттп://мавен.апацхе.орг/ПОМ/4.0.0' кмлнс: кси='хттп://ввв.в3.орг/2001/
КСМЛСцхема-инстанца '
кси: сцхемаЛоцатион='хттп://мавен.апацхе.орг/ПОМ/4.0.0 хттп://мавен.апацхе.орг/мавен-в4_0
_0.ксд '>
>4.0.0>
>цом.назив предузећа.хелловорлд>
>Здраво Свете>
>јар>
>1.0-СНАПХОТ>
>Здраво Свете>
>хттп://мавен.апацхе.орг>
>
>
>јунит>
>јунит>
>3.8.1>
>тест>
>
>
>

Јар датотеку можете генерисати помоћу следеће команде:

$ мвн пакет

[ИНФО] Скенирање пројеката ...
[ИНФО]
[ИНФО] ----------------------------------------------- -------------------------
[ИНФО] Изградња хелловорлд 1.0-СНАПХОТ
[ИНФО] ----------------------------------------------- -------------------------
[ИНФО]
[ИНФО] --- мавен-ресоурцес-плугин: 2.6: ресоурцес (дефаулт-ресоурцес) @ хелловорлд ---
[УПОЗОРЕЊЕ] Коришћење кодирања платформе (заправо УТФ-8) за копирање филтрираних ресурса, тј.
буилд зависи од платформе!
[ИНФО] прескочите непостојећи ресоурцеДирецтори/Усерс/зак/_ворк/ЛеарнБуилдСцриптс/ЛеарнМавен/
хелловорлд/срц/маин/ресоурцес
[ИНФО]
[ИНФО] --- мавен-цомпилер-плугин: 3.1: компајлирај (подразумевано-компајлирај) @ хелловорлд ---
[ИНФО] Откривене промене - поновно компајлирање модула!
[УПОЗОРЕЊЕ] Кодирање датотеке није постављено коришћењем кодирања платформе УТФ-8, тј
зависно од платформе!
[ИНФО] Превођење 1 изворне датотеке у/Усерс/зак/_ворк/ЛеарнБуилдСцриптс/ЛеарнМавен/
хелловорлд/таргет/цлассес
[ИНФО]
[ИНФО] --- мавен-ресоурцес-плугин: 2.6: тестРесоурцес (дефаулт-тестРесоурцес) @
Здраво Свете ---
[УПОЗОРЕЊЕ] Коришћење кодирања платформе (заправо УТФ-8) за копирање филтрираних ресурса, тј.
буилд зависи од платформе!
[ИНФО] прескочите непостојећи ресоурцеДирецтори/Усерс/зак/_ворк/ЛеарнБуилдСцриптс/ЛеарнМавен/
хелловорлд/срц/тест/ресоурцес
[ИНФО]
[ИНФО] --- мавен-цомпилер-плугин: 3.1: тестЦомпиле (дефаулт-тестЦомпиле) @ хелловорлд ---
[ИНФО] Откривене промене - поновно компајлирање модула!
[УПОЗОРЕЊЕ] Кодирање датотеке није постављено коришћењем кодирања платформе УТФ-8, тј
зависно од платформе!
[ИНФО] Превођење 1 изворне датотеке у/Усерс/зак/_ворк/ЛеарнБуилдСцриптс/ЛеарнМавен
/хелловорлд/таргет/тест-цлассес
[ИНФО]
[ИНФО] --- мавен-сурефире-плугин: 2.12.4: тест (подразумевано-тест) @ хелловорлд ---
[ИНФО] Директоријум извештаја Сурефире:/Усерс/зак/_ворк/ЛеарнБуилдСцриптс/ЛеарнМавен
/хелловорлд/таргет/
сигурни извештаји

-------------------------------------------------- -----
Т Е С Т С
-------------------------------------------------- -----
Покретање цом.цомпанинаме.хелловорлд.АппТест
Покренути тестови: 1, Грешке: 0, Грешке: 0, Прескочено: 0, Протекло време: 0.014 сек

Резултати:

Покренути тестови: 1, неуспеси: 0, грешке: 0, прескочени: 0

[ИНФО]
[ИНФО] --- мавен-јар-плугин: 2.4: јар (подразумевани-јар) @ хелловорлд ---
[ИНФО] Тегла за изградњу:/Усерс/зак/_ворк/ЛеарнБуилдСцриптс/ЛеарнМавен/хелловорлд/таргет/
хелловорлд-1.0-СНАПСХОТ.јар
[ИНФО] ----------------------------------------------- -------------------------
[ИНФО] ИЗГРАДИТЕ УСПЕХ
[ИНФО] ----------------------------------------------- -------------------------
[ИНФО] Укупно време: 5.624 с
[ИНФО] Завршено у: 2018-01-27Т00: 11: 10-08: 00
[ИНФО] Коначна меморија: 16М/114М
[ИНФО] ----------------------------------------------- -------------------------

Јар датотеку можете покренути овако:

$ јава -цп таргет/хелловорлд-1.0-СНАПСХОТ.јарса.назив фирме.Здраво Свете.Апликација
Здраво Свете!

Јар датотека се ставља у циљну фасциклу.

Градле

Градле комбинује моћ Ант и Мавен. Прва верзија Градле -а објављена је 2012. године. Брзо је усвојена. Гоогле га тренутно користи за Андроид ОС.

Уместо КСМЛ -а, Градле користи Гроови језик. Као резултат тога, скрипте за изградњу у Градлеу се лакше пишу и читају. У почетку је користио Иви за управљање зависностима, али сада користи сопствени механизам зависности.

Прос

  • Пружа стандардизацију док остаје флексибилан
  • Лако читање и писање скрипти за изградњу
  • Боље у руковању са више верзија зависности
  • Способан за руковање са више програмских језика и технологија
  • Активна заједница помаже у развоју алата
  • Градле ДСЛ (Домаин-Специфиц Лангуаге) чини једноставну конфигурацијску структуру
  • Градле пружа побољшања перформанси користећи постепено, предмеморију градње и Градле Даемон

Цонс

  • ИДЕ интеграција није тако добра као Мавен

Пример Градле

Градле можете инсталирати са овде . Када поставите Градле на свом путу, можете то проверити на следећи начин:

$ градле--верзија

-------------------------------------------------- ----------
Градле4.5
-------------------------------------------------- ----------

Време изградње:2018-01-24 17: 04:52УТЦ
Ревизија: 77д0ец90636ф43669дц794ца17еф80дд65457бец

Гроови: 2.4.12
Мрав: Апач Мрав(ТМ)верзија 1.9.9 састављена фебруара2 2017.
ЈВМ: 1.8.0_74(Орацле Цорпоратион25.74-б02)
ОС: Мац ОС Кс 10.11.6 к86_64

Затим креирајте следећу структуру директоријума:

Здраво Свете
| -градити.градле
``-срц
| -главни
``-јава
``-Здраво Свете
``-Здраво Свете.јава

За хелловорлд.јава ставите код из примера Ант. А за буилд.градле унесите следећи код:

примени додатак: 'јава'

верзија= '1.0'

спремишта{
мавенЦентрал()
}

зависности{
тестЦомпиле гроуп: 'јунит', име: 'јунит', верзија: '4.12'
}

Можете користити градле таскс - алл цомманд да погледате све доступне команде. Градле аутоматски преузима додатке које наведете у датотеци буилд.градле и приказује вам додатне задатке који су доступни због додатака.

Конструкцију можете добити покретањем:

$ градле тегла

БУИЛД УСПЕШАН ин 1с
2радни задаци:2погубљен

Своју теглу можете покренути овако:

$ јава -цп буилд/либс/хелловорлд-1.0.јарЗдраво Свете
Здраво Свете!

Јар датотека се ставља у фасциклу буилд/либс.

Закључак

Међу алатима за изградњу, Ант може бити користан за мање пројекте, док је Мавен бољи за то да сви програмери поштују иста правила. Градле је најновији алат који пружа највећу флексибилност.

Референце: