Является ли Ant по-прежнему лучшим выбором для инструмента сборки Java? [закрыто]
-
10-07-2019 - |
Вопрос
Из своего небольшого опыта я использовал только Ant в качестве инструмента для сборки. Есть ли другие проекты, которые лучше и почему?
Решение
Это намного лучше, чем 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, у муравьев есть плющ ( http: // ant. apache.org/ivy/ ) для функции зависимостей.
Если вы хотите продолжить использовать ant, возьмите «ANT IN ACTION», 2-е издание, чтобы вы могли использовать ant для максимальной производительности.
Удачи,
Некоторым людям нравится Ivy , который управляет зависимостями для Ant, поэтому я полагаю, что люди пришедший из муравьиного фона понравится.
Другие, такие как Buildr . Это штука на JRuby, так что если вы можете манипулировать Ruby и Java в одних и тех же проектах, то я думаю, это будет интересно.
Лично я просто использую Maven . Легко создать файл pom.xml по умолчанию и иметь все команды сборки в вашем распоряжении. А когда проект расширяется, у вас уже есть инфраструктура для запуска плагинов и добавления зависимостей.
У вас также есть Gant . Gant - это Groovy + Ant, вы можете написать свои задачи в простом Groovy, а также можете вызвать любую задачу Ant. Если вы работаете в Java-магазине и хотите использовать навыки работы с муравьями, которые у вас есть, но вам не нравится XML, я рекомендую Gant, его очень легко настроить, и вы можете встроить его в ant (а также вызвать gant из ant).
Мне действительно нравится SCons , инструмент для сборки, файлы конфигурации которого являются всего лишь скриптами Python. Это понравится всем, кто знает Python или подобные языки сценариев. SCons хорошо работает как с Java, так и с C / C ++ и другими языками, и я был очень доволен этим в прошлом.
Поскольку файлы SCons написаны на Python, вы можете написать произвольный код Python, если вам понадобится что-то особенное. Однако, если вы совершенно незнакомы с Python, тогда, возможно, будет более высокая кривая обучения, чем попытка расширить Ant или что-то подобное, чтобы делать то, что вы хотите.
Maven2, кажется, перспективна.
Однако для наших проектов мы переходим обратно к муравью, где это возможно. Р>
Maven2 требует совсем немного знаний, чтобы получить именно то, что вам нужно, и версии Maven2, похоже, по-разному обрабатывают пути к классам. Р>
И сложно проверить все лицензии, включенные в зависимости зависимостей, которые могут быть задействованы.
И может иметь более медленное время запуска, так как вам нужно выяснить зависимости самостоятельно, но, по крайней мере, это легко читается. Никакой магии здесь не происходит:)
Если вы используете maven, подумайте о внутреннем хранилище, таком как Nexus. Таким образом, ваше программное обеспечение не будет мертвым, если некоторые библиотеки решат уйти из сети *.
* Мы сгорели с maven1; перенаправления хранилища ibiblio maven1 и maven1 не поддерживают перенаправления: (
Я призываю вас начать с ваших требований при выборе подходящего инструмента. Каждый проект индивидуален, инструмент, который вы используете, должен отражать проблемное пространство, а не моду.
Тем не менее, я думаю, что для общего использования муравей все еще, вероятно, лучший общий инструмент для создания Java-приложений. Он часто эффективно используется с другими инструментами для управления зависимостями, но мы снова идем к решению, без проблем.
Очень хорошая новость заключается в том, что если ваш процесс является хорошим переключением инструментов сборки, это довольно безболезненный процесс - урок - начните с хорошего процесса, масштабируемого до рассматриваемой проблемы.
Вы уже найдете ответы на некоторые вопросы в Какие есть хорошие утилиты для создания java? .