Избор правог алата за изградњу: Ант против Мавен вс Градле
Током развоја софтвера, програмери морају поново и изнова да граде исти код. Често покушавају да користе басх скрипте или друге скриптне језике за аутоматизацију задатка. Међутим, постоје доступни алати за изградњу који су прикладнији за аутоматизацију израде. Превладавајући алати за израду су:
- Апачи мрав са бршљаном
- Мавен
- Градле
Истражимо алате како бисмо сазнали више.
Апачи мрав са бршљаном
Апацхе Ант је алат за командну линију заснован на Јави који користи КСМЛ датотеке за дефинисање скрипти за изградњу. Углавном се користи за Јава верзије, али се може користити и за развој Ц / Ц ++. Уграђени задаци пружају начине за компајлирање, састављање, тестирање и покретање софтверских апликација. Корисници такође могу да креирају сопствене „антлибс“ да би побољшали функционалност Ант-а. Апацхе Иви је алат за управљање зависношћу који се лако интегрише са Ант-ом да би пружио робуснији екосистем. Развој Ант започео је 2000. године.
Прос
- Боља контрола над укупним процесом израде
- Довољно флексибилан за рад са било којим радним процесом
Цонс
- Датотеке израде засноване на КСМЛ-у могу постати велике и неодрживе
- Много времена и ресурса је потребно за одржавање скрипти израде
- ИДЕ интеграцију је тешко постићи
Пример мрава са бршљаном
Овде можете да инсталирате најновији Ант. Морате да преузмете зип, проширите и ставите мапу за смеће на своју путању. Помоћу следеће наредбе можете да видите да ли је Ант правилно инсталиран:
$ ант -верзијаАпацхе Ант (ТМ) верзија 1.10.1 састављен 02. фебруара 2017
Када инсталирате Ант, можете да преузмете најновији Иви јар и ставите га у фасциклу либ у директоријуму Ант.
Након што инсталирате Ант, креирајте фасцикле хелловорлд и хелловорлд / срц. Унутар директоријума срц ставите хелловорлд.јава датотека са кодом:
/ **************************Штампа „Хелло Ворлд!"
*************************** /
јавна класа хелловорлд
јавна статичка воид главна (Стринг [] аргс)
Систем.напоље.принтлн ("Здраво свете!");
Сада у фасцикли хелловорлд креирајте изградњу.кмл датотеку са следећим кодом:
И у истој фасцикли хелловорлд креирајте бршљан.кмл датотеку са следећим кодом:
Структура директорија би требала изгледати овако:
Здраво Свете| - буилд.кмл
| - бршљан.кмл
'- срц
'-- Здраво Свете.јава
Сада можете покренути изградњу наредбом:
Тегла од мрава $Успешна градња би требало да пружи овакве резултате:
Тегла од мрава $Буилдфиле: / Усерс / зак / _ворк / ЛеарнБуилдСцриптс / ЛеарнАНТ / хелловорлд / буилд.кмл
решити:
[иви: ретриеве] :: Апацхе Иви 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М
[ИНФО] ------------------------------------------------------------------------
Структура директоријума би требало да изгледа овако:
Здраво Свете| - пом.кмл
'- срц
| - главни
|. | '- јава
|. | '- цом
|. | '-- Име компаније
|. | '-- Здраво Свете
|. | '-- Апликација.јава
'-- тест
'- јава
'- цом
'-- Име компаније
'-- Здраво Свете
'- АппТест.јава
Пом.кмл садржи конфигурације изградње. Унутар пом.кмл код изгледа овако:
_0.ксд ">
Датотеку јар можете генерисати помоћу следеће наредбе:
$ мвн пакет[ИНФО] Скенирање пројеката ..
[ИНФО]
[ИНФО] ------------------------------------------------------------------------
[ИНФО] Зграда хелловорлд 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 састављен 02. фебруара 2017
ЈВМ: 1.8.0_74 (Орацле Цорпоратион 25.74-б02)
ОС: Мац ОС Кс 10.11.6 к86_64
Даље, креирајте следећу структуру директоријума:
Здраво Свете| - буилд.градле
'- срц
| - главни
'- јава
'-- Здраво Свете
'-- Здраво Свете.јава
За свет хелловор.јава је ставила код из примера Ант. И за изградњу.градле ставите следећи код:
применити додатак: 'јава'верзија = '1.0 '
репозиторијуми
мавенЦентрал ()
зависности
тестЦомпиле група: 'јунит', име: 'јунит', верзија: '4.12 '
Помоћу наредбе „градле таскс -алл“ можете погледати све доступне команде. Градле аутоматски преузима додатке које сте навели у изради.градле датотеку и приказује вам додатне задатке доступне због додатака.
Изградњу можете добити покретањем:
$ градле јарИЗГРАДИТИ УСПЕШНО за 1с
2 извршна задатка: 2 извршена
Можете покренути своју теглу овако:
$ јава -цп буилд / либс / хелловорлд-1.0.тегла хелловорлдЗдраво Свете!
Датотека јар се ставља у директоријум буилд / либс.
Закључак
Међу алаткама за изградњу, Ант може бити користан за мање пројекте, док је Мавен бољи за осигурање да сви програмери поштују иста правила. Градле је најновији алат који пружа највећу флексибилност.
Референце:
- хттп: // ант.апацхе.орг /
- хттп: // ант.апацхе.орг / бршљан /
- хттпс: // мавен.апацхе.орг /
- хттпс: // градле.орг /
- хттп: // макбле.цом / градле-јунит-хелловорлд-екампле
- хттпс: // примери.јавацодегеекс.цом / цоре-јава / градле / градле-хелло-ворлд-туториал /
- хттпс: // градле.орг / мавен-вс-градле /
- хттпс: // мавен.апацхе.орг / гуидес / почетак рада / мавен-ин-пет-минута.хтмл
- хттпс: // стацковерфлов.цом / куестионс / 20755437 / јава-буилд-тоолс-ант-вс-мавен
- хттпс: // тецхнологицонверсатионс.цом / 2014/06/18 / буилд-тоолс /
- хттпс: // ввв.куора.цом / Које су предности и недостаци Мавен-а-против-Ант-а-као-грађевински-алати-за-Јаву