Java

Ant срещу Maven срещу Gradle

Ant срещу Maven срещу Gradle

Изборът на правилния инструмент за изграждане: Ant срещу Maven срещу Gradle

По време на разработката на софтуер, разработчиците трябва да възстановяват същия код отново и отново. Те често се опитват да използват bash скриптове или други скриптови езици за автоматизиране на задачата. Има обаче налични инструменти за изграждане, които са по-подходящи за автоматизация на изграждането. Преобладаващите инструменти за изграждане са:

Нека да проучим инструментите, за да разберем повече.

Apache Ant с Ivy

Apache Ant е инструмент на командния ред, базиран на Java, който използва XML файлове за дефиниране на скриптове за изграждане. Той се използва предимно за Java компилации, но може да се използва и за C / C ++ разработка. Вградените задачи предоставят начини за компилиране, сглобяване, тестване и стартиране на софтуерни приложения. Потребителите могат също да създадат свои собствени „antlibs“, за да подобрят функционалността на Ant. Apache Ivy е инструмент за управление на зависимости, който се интегрира лесно с Ant, за да осигури по-стабилна екосистема. Развитието на Ant започва през 2000г.

Професионалисти

Минуси

Мравка с бръшлян Пример

Можете да инсталирате най-новия Ant от тук. Трябва да изтеглите ципа, да разгънете и да поставите папката bin по пътя си. Можете да използвате следната команда, за да видите дали Ant е инсталиран правилно:

$ мравка -версия
Apache Ant (TM) версия 1.10.1, съставен на 2 февруари 2017 г

След като инсталирате Ant, можете да изтеглите най-новия буркан Ivy и да го поставите в папката lib в директорията Ant.

След като инсталирате Ant, създайте папки helloworld и helloworld / src. Вътре в папката src поставете helloworld.java файл с код:

/ **************************
Отпечатва "Hello World!"
*************************** /
публичен клас helloworld
публична статична void main (String [] args)
Система.навън.println ("Здравей, Свят!");

Сега в папката helloworld създайте компилация.xml файл със следния код:
























И в същата папка helloworld създайте бръшлян.xml файл със следния код:






Структурата на директориите трябва да изглежда така:

Здравей свят
| - изграждане.xml
| - бръшлян.xml
'- src
'-- Здравей свят.java

Сега можете да стартирате компилацията с командата:

$ мравка буркан

Успешната компилация трябва да осигури изход като този:

$ мравка буркан
Buildfile: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml
разрешаване:
[ivy: retrieve] :: Apache Ivy 2.4.0 - 20141213170938 :: http: // ant.апаш.org / бръшлян / ::
[бръшлян: извличане] :: настройки за зареждане :: url = jar: файл: / Users / zak / BuildTools / ANT / apache
-мравка-1.10.1 / lib / бръшлян-2.4.0.буркан!/ org / apache / ivy / core / settings / ivysettings.xml
[бръшлян: извлича] :: разрешаване на зависимости :: org.apache # helloworld; [имейл защитен]
MacBook Air.местни
[бръшлян: извлича] confs: [по подразбиране]
[бръшлян: извлича] намерен junit # junit; 4.12 публично
[бръшлян: извлича] намерена организация.hamcrest # ядро ​​на ядрото; 1.3 публично
[бръшлян: извличане] :: доклад за резолюция :: разрешаване на 397ms :: артефакти dl 15ms
---------------------------------------------------------------------
| | модули || артефакти |
| conf | номер | търсене | dwnlded | изгонен || номер | dwnlded |
---------------------------------------------------------------------
| по подразбиране | 2 | 0 | 0 | 0 || 4 | 0 |
---------------------------------------------------------------------
[ivy: retrieve] :: retrieving :: org.apache # helloworld
[бръшлян: извлича] confs: [по подразбиране]
[ivy: retrieve] 0 копирани артефакта, 4 вече извлечени (0kB / 39ms)
компилиране:
[mkdir] Създадена директория: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build /
класове
[javac] / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build.xml: 22: предупреждение:
„includeantruntime“ не беше зададен, по подразбиране е изграден.sysclasspath = последен; зададено на false
за повторяеми компилации
[javac] Компилиране на 1 изходен файл в / Users / zak / _work / LearnBuildScripts / LearnANT /
helloworld / build / класове
буркан:
[mkdir] Създаден каталог: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin
[jar] Изграждане на jar: / Users / zak / _work / LearnBuildScripts / LearnANT / helloworld / build / bin /
Здравей свят.буркан
СТРОИТЕ УСПЕШНИ
Общо време: 6 секунди

Можете да изпробвате файла на jar по този начин:

$ java -cp build / bin / helloworld.буркан helloworld
Здравей свят!

Определихме jar файла, който да бъде поставен в папката build / bin. Папките се създават по време на компилацията. Командата ant jar извиква целта на jar в компилацията.xml.

Мейвън

Maven е разработен за разрешаване на проблемите, с които се сблъскват сценариите, базирани на Ant. Той запазва XML файловете, но възприема различен подход към организацията. В Ant разработчиците трябва да създадат всички задачи. Maven намалява създаването на задачи, като прилага по-строги стандарти за организиране на код. В резултат на това е по-лесно да започнете със стандартни проекти.

Той също така въведе изтегляния на зависимости, които улесниха разработката. Преди въвеждането на Ivy в Ant, потребителите трябваше да управляват зависимостите локално. Мейвън първо прие философията за управление на зависимостите.

Строгите стандарти на Mavens обаче затрудняват писането на персонализирани скриптове за изграждане. Инструментът е лесен за работа, стига проектът да спазва строгите стандарти.

Професионалисти

Минуси

Пример за Maven

Можете да изтеглите най-новия Maven от тук. Можете да проверите инсталацията по следния начин:

$ mvn --версия
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T00: 58: 13-07: 00)
Начало на Maven: / Users / zak / BuildTools / Maven / apache-maven-3.5.2
Версия на Java: 1.8.0_74, доставчик: Oracle Corporation
Начална страница на Java: / Библиотека / Java / JavaVirtualMachines / jdk1.8.0_74.jdk / Съдържание / Начало / jre
Локал по подразбиране: en_US, кодиране на платформа: UTF-8
Име на операционната система: "mac os x", версия: "10.11.6 ", арка:" x86_64 ", семейство:" mac "

Създайте папка helloworld и генерирайте проект със следната команда:

$ mvn архетип: генериране -DgroupId = com.Име на фирмата.helloworld -DartifactId = helloworld
-DarchetypeArtifactId = maven-archetype-quickstart -DinteractiveMode = false

Той трябва да създаде структурата на папките и да генерира изхода, който изглежда така:

[INFO] Сканиране за проекти ..
[ИНФОРМАЦИЯ]
[ИНФОРМАЦИЯ] ------------------------------------------------------------------------
[INFO] Изграждане на Maven Stub Project (без POM) 1
[ИНФОРМАЦИЯ] ------------------------------------------------------------------------
[ИНФОРМАЦИЯ]
[ИНФОРМАЦИЯ] >>> maven-archetype-plugin: 3.0.0: генериране (клиент по подразбиране)> генериране на източници
@ standalone-pom >>>
[ИНФОРМАЦИЯ]
[ИНФОРМАЦИЯ] <<< maven-archetype-plugin:3.0.0:generate (default-cli) < generate-sources
@ standalone-pom <<<
[ИНФОРМАЦИЯ]
[ИНФОРМАЦИЯ]
[ИНФО] --- maven-archetype-plugin: 3.0.0: генериране (клип по подразбиране) @ standalone-pom ---
[INFO] Генериране на проект в групов режим
[ИНФОРМАЦИЯ] ----------------------------------------------------------------------------
[INFO] Използване на следните параметри за създаване на проект от Old (1.x) Архетип:
maven-archetype-quickstart: 1.0
[ИНФОРМАЦИЯ] ----------------------------------------------------------------------------
[INFO] Параметър: basedir, Стойност: / Users / zak / _work / LearnBuildScripts / LearnMaven
[INFO] Параметър: пакет, Стойност: com.Име на фирмата.Здравей свят
[INFO] Параметър: groupId, Стойност: com.Име на фирмата.Здравей свят
[INFO] Параметър: artifactId, Стойност: helloworld
[INFO] Параметър: packageName, Стойност: com.Име на фирмата.Здравей свят
[INFO] Параметър: версия, Стойност: 1.0-СНИМКА
[INFO] проект, създаден от Old (1.x) Архетип в реж .: / Users / zak / _work /
LearnBuildScripts / LearnMaven / helloworld
[ИНФОРМАЦИЯ] ------------------------------------------------------------------------
[ИНФО] СТРОИТЕЛЕН УСПЕХ
[ИНФОРМАЦИЯ] ------------------------------------------------------------------------
[ИНФО] Общо време: 8.602 с
[INFO] Завършено в: 2018-01-27T00: 05: 37-08: 00
[INFO] Окончателна памет: 15M / 152M
[ИНФОРМАЦИЯ] ------------------------------------------------------------------------

Структурата на папките трябва да изглежда така:

Здравей свят
| - пом.xml
'- src
| - главен
| '- Java
| '- ком
| '-- Име на фирмата
| '-- Здравей свят
| '- App.java
'-- тест
'- Java
'- ком
'-- Име на фирмата
'-- Здравей свят
'- AppTest.java

Пом.xml съдържа конфигурациите за изграждане. Вътре в пом.xml кодът изглежда така:

xsi: schemaLocation = "http: // maven.апаш.org / POM / 4.0.0 http: // maven.апаш.org / maven-v4_0
_0.xsd ">
4.0.0
com.Име на фирмата.Здравей свят
Здравей свят
буркан
1.0-СНИМКА
Здравей свят
http: // maven.апаш.орг


джунит
джунит
3.8.1
тест


Можете да генерирате jar файла, като използвате следната команда:

$ mvn пакет
[INFO] Сканиране за проекти ..
[ИНФОРМАЦИЯ]
[ИНФОРМАЦИЯ] ------------------------------------------------------------------------
[INFO] Изграждане на helloworld 1.0-СНИМКА
[ИНФОРМАЦИЯ] ------------------------------------------------------------------------
[ИНФОРМАЦИЯ]
[INFO] --- maven-resources-plugin: 2.6: ресурси (ресурси по подразбиране) @ helloworld ---
[ПРЕДУПРЕЖДЕНИЕ] Използване на кодиране на платформа (всъщност UTF-8) за копиране на филтрирани ресурси, т.е.д.
build е зависим от платформата!
[INFO] пропуснете несъществуващия ресурсDirectory / Users / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / src / main / resources
[ИНФОРМАЦИЯ]
[INFO] --- maven-compiler-plugin: 3.1: компилиране (компилиране по подразбиране) @ helloworld ---
[INFO] Открити промени - прекомпилиране на модула!
[ПРЕДУПРЕЖДЕНИЕ] Не е зададено кодиране на файлове, използвайки кодиране на платформа UTF-8, т.е.д. build е
зависими от платформата!
[INFO] Компилиране на 1 изходен файл в / Users / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / target / класове
[ИНФОРМАЦИЯ]
[INFO] --- maven-resources-plugin: 2.6: testResources (по подразбиране testResources) @
Здравей свят ---
[ПРЕДУПРЕЖДЕНИЕ] Използване на кодиране на платформа (всъщност UTF-8) за копиране на филтрирани ресурси, т.е.д.
build е зависим от платформата!
[INFO] пропуснете несъществуващия ресурсDirectory / Users / zak / _work / LearnBuildScripts / LearnMaven /
helloworld / src / test / resources
[ИНФОРМАЦИЯ]
[INFO] --- maven-compiler-plugin: 3.1: testCompile (по подразбиране testCompile) @ helloworld ---
[INFO] Открити промени - прекомпилиране на модула!
[ПРЕДУПРЕЖДЕНИЕ] Не е зададено кодиране на файлове, използвайки кодиране на платформа UTF-8, т.е.д. build е
зависими от платформата!
[INFO] Компилиране на 1 изходен файл в / Users / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / target / test-classes
[ИНФОРМАЦИЯ]
[INFO] --- maven-surefire-plugin: 2.12.4: тест (тест по подразбиране) @ helloworld ---
[ИНФО] Директория на отчетите на Surefire: / Users / zak / _work / LearnBuildScripts / LearnMaven
/ helloworld / target /
сигурни доклади
-------------------------------------------------------
Т Е С Т С
-------------------------------------------------------
Работи com.Име на фирмата.Здравей свят.AppTest
Изпълнени тестове: 1, неуспехи: 0, грешки: 0, пропуснати: 0, изминало време: 0.014 сек
Резултати:
Изпълнени тестове: 1, неуспехи: 0, грешки: 0, пропуснати: 0
[ИНФОРМАЦИЯ]
[INFO] --- maven-jar-plugin: 2.4: буркан (по подразбиране) @ helloworld ---
[INFO] Изграждане на буркан: / Users / zak / _work / LearnBuildScripts / LearnMaven / helloworld / target /
helloworld-1.0-СНИМКА.буркан
[ИНФОРМАЦИЯ] ------------------------------------------------------------------------
[ИНФО] СТРОИТЕЛЕН УСПЕХ
[ИНФОРМАЦИЯ] ------------------------------------------------------------------------
[ИНФО] Общо време: 5.624 с
[INFO] Завършено в: 2018-01-27T00: 11: 10-08: 00
[INFO] Окончателна памет: 16M / 114M
[ИНФОРМАЦИЯ] ------------------------------------------------------------------------

Можете да стартирате jar файла по този начин:

$ java -cp target / helloworld-1.0-СНИМКА.буркан ком.Име на фирмата.Здравей свят.Приложение
Здравей свят!

Файлът на jar се поставя в целевата папка.

Градле

Gradle съчетава силата на Ant и Maven. Първата версия на Gradle излезе през 2012 година. Бързо приемане. В момента Google го използва за Android OS.

Вместо XML, Gradle използва езика Groovy. В резултат на това скриптове за изграждане в Gradle са по-лесни за писане и четене. Първоначално използваше Ivy за управление на зависимости, но сега използва свой собствен механизъм за зависимост.

Професионалисти

Минуси

Пример за Gradle

Можете да инсталирате Gradle от тук. След като настроите Gradle по пътя си, можете да го проверите чрез:

$ gradle --version
------------------------------------------------------------
Gradle 4.5
------------------------------------------------------------
Време за изграждане: 2018-01-24 17:04:52 UTC
Ревизия: 77d0ec90636f43669dc794ca17ef80dd65457bec
Грув: 2.4.12
Ant: Apache Ant (TM) версия 1.9.9 съставен на 2 февруари 2017 г
JVM: 1.8.0_74 (Oracle Corporation 25.74-b02)
ОС: Mac OS X 10.11.6 x86_64

След това създайте следната структура на директорията:

Здравей свят
| - изграждане.gradle
'- src
| - главен
'- Java
'-- Здравей свят
'-- Здравей свят.java

За здравия свят.java постави кода от примера Ant. И за изграждане.gradle поставете следния код:

приложи плъгин: 'java'
версия = '1.0 '
хранилища
mavenCentral ()

зависимости
testCompile група: 'junit', име: 'junit', версия: '4.12'

Можете да използвате командата “gradle tasks -all”, за да разгледате всички налични команди. Gradle автоматично взема добавките, които сте посочили в компилацията.gradle файл и ви показва допълнителните задачи, налични поради приставките.

Можете да получите компилацията, като изпълните:

$ gradle буркан
СТРОИТЕ УСПЕШНО за 1 секунди
2 изпълними задачи: 2 изпълнени

Можете да стартирате бурканчето си така:

$ java -cp build / libs / helloworld-1.0.буркан helloworld
Здравей свят!

Файлът на jar се поставя в папката build / libs.

Заключение

Сред инструментите за изграждане Ant може да бъде полезен за по-малки проекти, докато Maven е по-добре да се увери, че всички разработчици спазват едни и същи правила. Gradle е най-новият инструмент, който осигурява най-голяма гъвкавост.

Препратки:

Бутонът на левия бутон на мишката не работи в Windows 10
Ако използвате специална мишка с вашия лаптоп или настолен компютър, но бутонът на левия бутон на мишката не работи на Windows 10/8/7 по някаква причи...
Курсорът скача или се движи произволно, докато пишете в Windows 10
Ако установите, че курсорът на вашата мишка скача или се движи самостоятелно, автоматично, произволно, докато пишете в лаптоп или компютър на Windows,...
Как да обърнете посоката на превъртане на мишката и тъчпада в Windows 10
Мишка и Тъчпадs не само правят изчисленията лесни, но и по-ефективни и отнемат по-малко време. Не можем да си представим живот без тези устройства, но...