Является ли Ant по-прежнему лучшим выбором для инструмента сборки Java? [закрыто]

StackOverflow https://stackoverflow.com/questions/194125

Вопрос

Из своего небольшого опыта я использовал только Ant в качестве инструмента для сборки. Есть ли другие проекты, которые лучше и почему?

Это было полезно?

Решение

Maven

Это намного лучше, чем 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? .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top