Является ли Ant по-прежнему лучшим выбором для инструмента сборки Java?
Из моего небольшого опыта я использовал только Ant в качестве инструмента для сборки. Есть ли другие проекты, которые лучше и почему?
9 ответов
Это намного лучше, чем ant, потому что для большинства общих задач вам не нужно писать сложный build.xml, maven имеет очень хорошие значения по умолчанию, и это все соглашение по конфигурации.
Он также имеет большой центральный репозиторий библиотек, и его очень легко настроить, например, "использовать последние стабильные общие ресурсы - что угодно". Затем Maven загрузит для вас последнюю стабильную версию (больше не нужно проверять jar-файлы в VCS) и, если будет выпущена новая стабильная версия, она также загрузит ее. Конечно, так же легко заблокировать его для какой-то конкретной версии, если вам это нужно.
Он также хорошо интегрирован как с Netbeans, так и с Eclipse (плагин m2eclipse), поэтому IDE учитывает любые настройки (включая зависимости), которые вы объявляете в файле pom.xml.
У maven также есть некоторые недостатки: некоторые плагины плохо документированы, интеграция с обоими IDE не совсем идеальна, и что по-разному некоторые сообщения об ошибках могут быть трудны для понимания.
Муравей все еще главный игрок. По моему опыту, это доминирует. Плюс, с Айви, он справляется с некоторыми сильными сторонами Maven. IMO, Ant станет основой для других инструментов: XML слишком жесткий (см. Ссылку ниже).
Maven 2 также является крупным игроком. Я знаю людей, которым это очень нравится, и яростная критика в отношении Maven 1 (он прошел долгий путь).
Groovy предлагает некоторые интересные вещи в пространстве сборки, потому что они основаны на Ant. Gant используется в Grails, но может быть включен в Gradle. Они также могут быть использованы для Java.
На риск сутенерства моего собственного блога, вот пост о Ганте и Грэдле. Вот ссылка на самые актуальные дебаты об их будущем.
На предприятии муравей по-прежнему является игроком в окопах. зависимости не меняются быстро. в отличие от проектов с открытым исходным кодом, которые продолжают переходить на довольно новую версию зависимых фляг, предприятия MOST стараются НЕ слишком быстро менять свои зависимости. Учитывая это, преимущества maven не слишком много по сравнению с муравьем.
С другой стороны, если вам нужны некоторые функции maven, у ant-пользователей есть функция ivy ( http://ant.apache.org/ivy/) для функции зависимостей.
Если вы хотите продолжить использовать ant, получите "ANT IN ACTION", 2-е издание, чтобы вы могли использовать ant для максимальной производительности.
Удачи,
Некоторым людям нравится Ivy, который занимается управлением зависимостями для Ant, поэтому я полагаю, что людям из Ant он понравится.
Другие, как Buildr. Это штука на JRuby, так что если вы можете манипулировать Ruby и Java в одних и тех же проектах, то, я думаю, это будет интересно.
Лично я просто использую Maven. Легко создать файл pom.xml по умолчанию и иметь все команды сборки в вашем распоряжении. А когда проект растет, у вас уже есть инфраструктура для запуска плагинов и добавления зависимостей.
У вас также есть Гант. Gant - это Groovy + Ant, вы можете написать свои задачи в простом Groovy, а также можете вызвать любую задачу Ant. Если вы работаете в Java-магазине и хотите использовать свои навыки работы с ant, но не любите XML, я рекомендую Gant, его очень легко настроить, и вы можете встроить его в ant (а также вызвать gant из ant).
Maven2, кажется, перспективна.
Однако для наших проектов мы возвращаемся к муравьям, где это возможно.
Maven2 требует совсем немного знаний, чтобы получить именно то, что вам нужно, и версии Maven2, похоже, по-разному обрабатывают пути к классам.
И очень сложно проверить все лицензии, включенные в зависимости зависимостей, которые могут быть задействованы.
И может иметь более медленное время запуска, так как вам нужно выяснить зависимости самостоятельно, но, по крайней мере, это легко читается. Никакой магии здесь не происходит:)
Если вы используете Maven, подумайте о внутреннем хранилище, таком как Nexus. Таким образом, ваше программное обеспечение не будет мертвым, если некоторые библиотеки решат уйти из сети *.
* Мы сгорели с Maven1; перенаправления хранилища ibiblio maven1 и maven1 не поддерживают перенаправления:(
Мне очень нравится SCons, который является инструментом сборки, файлы конфигурации которого являются всего лишь скриптами Python. Это понравится всем, кто знает Python или похожие языки сценариев. SCons хорошо работает как с Java, так и с C/C++ и другими языками, и я был очень доволен этим в прошлом.
Поскольку файлы SCons написаны на Python, вы можете написать произвольный код на Python, если вам понадобится что-то особенное. Однако, если вы совершенно незнакомы с Python, тогда, возможно, будет более высокая кривая обучения, чем попытка расширить Ant или что-то подобное, чтобы делать то, что вы хотите.
Я призываю вас начать с ваших требований при выборе правильного инструмента. Каждый проект индивидуален, инструмент, который вы используете, должен отражать проблемное пространство, а не моду.
При этом, я думаю, что для общего использования муравей все еще, вероятно, лучший общий инструмент для создания Java-приложений. Он часто эффективно используется с другими инструментами для управления зависимостями, но мы снова идем к решению без проблем.
Очень хорошая новость заключается в том, что если ваш процесс является хорошим переключением инструментов сборки, это довольно безболезненный процесс - урок - начните с хорошего процесса, масштабируемого до рассматриваемой проблемы.
Вы уже найдете ответы на некоторые вопросы. Какие есть хорошие утилиты java make?,