Выяснить зависимости пакетов действительно не так сложно. В любом случае вы редко это делаете. Вероятно, один раз при настройке проекта и еще несколько при обновлении. С помощью maven вы в конечном итоге исправите несоответствующие зависимости, плохо написанные помы и все равно будете делать исключения пакетов.
Не так уж и сложно ... для игрушечных проектов. Но в проектах, над которыми я работаю, их много, очень много, и я очень рад получить их транзитивно, иметь для них стандартизированную схему именования. Управлять всем этим вручную было бы кошмаром.
И да, иногда приходится работать над схождением зависимостей. Но подумайте дважды, это не присуще Maven, это присуще любой системе, использующей зависимости (и здесь я говорю о зависимостях Java в целом).
Таким образом, с Ant вы должны проделать ту же работу, за исключением того, что вам придется делать все вручную: получить некоторую версию проекта A и его зависимости, получить некоторую версию проекта B и его зависимости, выяснить, какие именно версии они используют, проверить чтобы они не пересекались, проверяя, что они не несовместимы, и т. д. Добро пожаловать в ад.
С другой стороны, Maven поддерживает управление зависимостями и будет извлекать их для меня транзитивно и предоставляет мне инструменты, необходимые для управления сложностью, присущей управлению зависимостями : я могу анализировать дерево зависимостей, контролировать версии, используемые в транзитивных зависимостях, исключать некоторые из их, если требуется, контролировать схождение модулей и т. д. В этом нет никакой магии. Но, по крайней мере, у вас есть поддержка.
И не забывайте, что управление зависимостями - это лишь небольшая часть того, что предлагает Maven, есть гораздо больше (не говоря уже о других инструментах, которые хорошо интегрируются с Maven, например, Sonar ).
Медленный цикл FIX-COMPILE-DEPLOY-DEBUG, убивающий производительность. Это моя главная проблема. Вы вносите изменения, вам нужно дождаться запуска сборки maven и дождаться ее развертывания. Никакого горячего развертывания.
Во-первых, почему вы так используете Maven? Я не. Я использую свою IDE для написания тестов, кода до тех пор, пока они не пройдут, рефакторинга, развертывания, горячего развертывания и запуска локальной сборки Maven, когда я закончу, перед фиксацией, чтобы убедиться, что я не нарушу непрерывную сборку.
Во-вторых, я не уверен, что использование Ant может улучшить ситуацию. По моему опыту, модульные сборки Maven с использованием двоичных зависимостей обеспечивают более быстрое время сборки, чем типичные монолитные сборки Ant. В любом случае, взгляните на Maven Shell для готовой (повторной) использования среды Maven (что, кстати, потрясающе).
В конце концов, я сожалею об этом, но на самом деле не Maven убивает вашу производительность, а вы неправильно используете свои инструменты. И если вам это не нравится, ну что я могу сказать, не используйте его. Лично я использую Maven с 2003 года и никогда не оглядывался назад.