2013-02-19 2 views
29

Я недавно начал использовать Gradle в качестве системы сборки. Они первое сравнение, которое Gradle делает с таким Ant и Maven является то, что Ant является системой сборки императива, в то время как Maven является декларативной системы сборки. В то время как Gradle является декларативной системой без жесткости, выполняемой Maven.Imperative vs Declarative build systems

Я хотел понять эти термины декларативный и императив лучше, когда дело доходит до разговоров о системах сборки.

ответ

41

Короче говоря, скрипт муравья сообщает муравьям, что делать - «Скомпилируйте эти файлы, а затем скопируйте их в эту папку, затем возьмите содержимое этой папки и создайте архив».

В то время как специалист pom заявляет , что мы хотели бы иметь в качестве результата - «вот имена библиотек проекта зависит от, и мы хотели бы, чтобы создать веб-архив». Maven знает, как получить библиотеки и найти исходные классы самостоятельно.

В то время как муравей дает вам большую гибкость, он также заставляет вас постоянно изобретать велосипед.

Maven с другой стороны требует меньше конфигурации, но может чувствовать себя слишком сдерживающим, особенно если вы привыкли к другому документообороту.

EDIT: Важный аспект сравнения муравьев-Maven является то, что специалист имеет конвенции, описывающие, где файлы должны лежать, где зависимости найти, куда поместить полученный артефакт, а муравей не ,

Таким образом, вы можете думать о том, чтобы использовать maven как поездку на автобусе - вы выбираете остановку, где вы входите, и ту, где вы уходите. Использование муравья похоже на вождение автомобиля - вы должны сделать это сами. Вам не нужно рассказывать водителю автобуса, что делать, но остановки могут быть слишком далеко от того места, куда вы хотите отправиться.

EDIT2: «Переосмысление колеса» метафора кажется менее ясным, чем я надеялся. Это то, что я имею в виду:

Без разумных стандартных/условных обозначений вы должны четко определить структуру проекта и жизненный цикл сборки для каждого проекта, что часто делает его вопросом вкуса и мнения. Поскольку предпочтения варьируются между командами и компаниями, так что создавайте процессы. Это требует большего количества когнитивных усилий для новых участников проекта и более поздних сопровождающих. В зависимости от опыта и опыта разработчиков, окончательное решение может быть трудно расширить и использовать.

Как я уже сказал в комментарии ниже, в то время как существуют лучшие практики для сборки муравьев, они все равно должны быть реализованы для каждого проекта или скопированы из проекта в проект вместо того, чтобы стать готовым по умолчанию самого инструмента построения.

Maven - это слишком далеко на другой стороне компромисса по моему вкусу. Изменение значений по умолчанию не так просто, как могло бы и должно быть.

+0

Хотя я не работал над Ant, но что-то в этом роде должно быть уже решено правильно?Как somekind плагина в Ant, что то же самое в других проектах? –

+1

@AnkitDhingra Я боюсь, что популярная практика с муравьем заключается в том, чтобы скопировать вставку настроек, которые работали в последний раз :) Есть лучшие практики, конечно, но вы все равно должны их реализовать. Пожалуйста, см. Править – kostja

+0

@AnkitDhingra. На самом деле это не так, как изобретать колесо, вы правы, а перестраиваете его. – kostja