Какие хорошие утилиты для создания Java?

Я ищу утилиту make для создания больших Java-программ. Я уже знаю об ANT, но хочу посмотреть, что еще доступно.

В идеале, он должен быть в состоянии справиться со странностью каталога пакета.java->. Class, которая портит GNU Make.

Win32, но кроссплатформенность это плюс.

РЕДАКТИРОВАТЬ: я вижу некоторые недостатки использования ANT, поэтому я хотел увидеть другие варианты, хотя я, вероятно, в конечном итоге использовать его, просто потому, что он работает.

  • требует нетривиальных make-файлов XML, "HelloWorld" - это уже 25 строк, и любая более разумная программа быстро становится большой.
    • В руководствах по муравью показано сравнение файлов ant build.xml, которые примерно идентичны большим файлам.bat, которые просто выполняют все команды java, только дольше. http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html, у меня уже есть один из них.
    • "Xml" означает, что каждая отдельная зависимость, переменная, цель, правило и проект несут в себе лишнюю затею, просто затрудняет чтение строк. Угловая скобка налога
  • решает все неправильные проблемы для меня.
    • ant облегчает написание командных строк jar и javac, упрощает генерацию манифестов, упрощает указание исходных файлов.java, упрощает указание свойств jvm/java, упрощает написание пользовательских инструментов сборки.
    • ant не облегчает зависимости классов java, и, похоже, не имеет более мощной системы переменных, обе вещи обычно решаются утилитами make.

Я бы использовал gnu make, но он не может определить, где в конечном итоге будет находиться файл.class для файла.java с объявлением пакета.

13 ответов

Муравей и мейвен, безусловно, два стандарта. Если вы уже знакомы с Ant и хотите управлять зависимостями, поставляемыми с Maven, вы можете взглянуть на Ivy.

Одна вещь, которой не хватает ни Ant, ни Maven, - это настоящие структуры управления в ваших скриптах сборки. Есть плагины, которые вы можете скачать для Ant, которые предоставляют некоторые из этих элементов управления, но (опять же, если вы уже знакомы с Ant), вы можете взглянуть на Gant, который является Groovy-оболочкой для Ant.

Забудьте муравья!!

Apache Maven - это путь, если вы спросите меня.

Функция, которая мне нравится больше всего, заключается в том, что она встроена в управление зависимостями. Это означает, что вам не нужно проверять сторонние JAR-файлы в вашем проекте контроля версий.

Вы указываете свои зависимости в POM maven (Project Object Model - это в основном XML-описание вашего проекта) и maven автоматически загружает, компилирует их и упаковывает их вместе с вашим приложением.

Другие действительно приятные функции: Управление выпуском и публикацией выпусков - Выполняйте выпуски, используя консольные команды maven. Эта функция помечает вашу базу кода в системе контроля версий. Оформить чистую копию, собрать ее и упаковать для развертывания. Вторая команда загрузит его в ваш репозиторий для распространения среди других конечных пользователей.

Большое и растущее хранилище библиотек, уже использующих maven - КАЖДЫЙ проект Apache использует maven. НАГРУЗКИ больше на борту также. Убедитесь сами, вот главный репо

Возможность размещения собственного репо. - Где вы можете выпускать свои собственные сборки, а также загружать JAR-файлы, которых нет в других общедоступных репозиториях (как большинство SUN-jar-файлов)

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

Если у вас уже есть проект, для которого вы хотите создать файл сборки, у меня нет никаких рекомендаций, кроме вышеупомянутого муравья.

Это не столько ответ, сколько вопрос. ANT - это стандартный способ построения Java. Он хорошо работает с Java, множеством инструментов Java и с круиз-контролем. Так почему вы хотите попробовать что-нибудь еще?

Если у вас нет крайнего случая, который ANT не покрывает, то я бы порекомендовал вам придерживаться ANT.

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

Муравей был лидером в течение многих лет. Но его build.xml, ну, на основе xml, очень многословен. Управление зависимостями может быть достигнуто путем соединения его с плющом.

maven стремится предоставить из коробки то, что обеспечивает тандем ant+ivy, это хорошо, пока работает. Если он перестает это делать, и вам нужно выяснить, где он портится с управлением зависимостями, это, вероятно, будет худшим адом, который вы только можете себе представить. Также это pom.xml... написано в xml.

sbt - это инструмент сборки Royal Scala, который использует ivy для управления зависимостями, а файлы сборки записываются в DSL Scala. Вполне зрелый, но диалект скалы может не понравиться.

Файлы сборки buildr указаны в ruby. Совместим с репозиториями Maven и обеспечивает собственное управление зависимостями. Интеграция муравьев тоже есть.

Gradle использует Groovy для своих файлов сборки. Помимо поддержки maven или ivy, теперь у нее есть собственный менеджер зависимостей, который использовал ivy в прошлом и не был удовлетворен. Бесшовная интеграция муравьев. Имеет самый простой синтаксис на сегодняшний день.


ant, ivy, maven, buildr являются проектами apache.


TL; DR

Проверьте gradle или buildr.

Одной из альтернатив является scons, если вы хотите что-то довольно легкое. Я немного его использовал и понял, что его довольно легко понять, особенно если вы уже знаете синтаксис Python. Еще один вариант - Maven, но он не прост в любом случае. Тем не менее, он предоставляет множество дополнительных возможностей, таких как помощь в управлении документами. Я не назвал бы это заменой как бы то ни было;)

JMK Это примитивно, но настолько мало, что вы можете встроить его в исходный файл.tar.gz и едва изменить его размер.

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

После того, как надоело смотреть на совершенно бесполезные и бесполезные ошибки при попытке сделать самые простые вещи (например, FTP war файл на сервер), Maven был выброшен и Ant отряхнул. С тех пор я не оглядывался назад.

Ну, очевидно, есть классические утилиты make (make, gmake, nmake), есть также (я думаю) некоторые системы сборки, написанные на Ruby, или, возможно, Python. Они не специфичны для Java, скорее это просто системы сборки с возможностью написания скриптов

Но ANT является лидером в этой области уже 8-9 лет, и с точки зрения основ, довольно легко начать работу.

В свое время, сделать из особенно ужасного для компиляции Java, потому что он обычно вызывал компилятор javac для каждого файла в отдельности. ANT не страдает от этого, и, возможно, make можно изменить, чтобы не делать этого. Но это был один из элементов ANT, который сделал его таким популярным. Это было просто быстро.

Я ценю, что ANT не может быть идеальным решением, но оно действительно практично.

Мне нравится использовать муравей с ant4eclipse. Это позволяет мне устанавливать зависимости в eclipse, делать сборки разработки и тестирование в eclipse, а также делать непрерывные сборки с использованием ant.

Я перешел из Ant в Maven 2 и с тех пор не оглядывался назад. Ant и Maven 2 разных способа построения. С Ant вы даете инструкции о том, как строить вещи. Тогда как с Maven 2 вы говорите, что хотите построить. Если у вас есть существующая сборка Ant,xml, вы можете сделать первый шаг в рефакторинге вашей сборки, обернув его в Maven 2 pom.xml.

1) Муравей + плющ очень хорош, если у вас есть инвестиции в муравья. Вам не нужно переходить от муравья к мавену только ради положительных качеств.

2) Гант и муравей: как они сравниваются: http://java.dzone.com/articles/ant-or-gant-part-1

3) http://www.gradle.org/ - использует Groovy!

BR,
~ A

Я использую ANT все время. Это потому, что я разрабатываю веб-приложения, используя Google Web Toolkit (GWT), в котором есть дополнительный этап компиляции клиентской java-версии в java-скрипт. С муравьем все, что мне нужно было знать, это как работает GWT, а затем я сам организовал сборку. С Maven я должен подождать, пока кто-нибудь напишет плагин. или я сам пишу. Существует вероятность того, что появятся другие структуры и инструменты, которые не следуют обычным соглашениям. мне не нужно все время искать плагины maven. С муравьем я могу делать все, что захочу, прозрачно. Мне также нравится писать XML-файлы. (Мне нужно, потому что я должен написать несколько - web.xml, application.xml, persistence.xml, SqlMap.xml, dataset.xml и т. д. Моя точка зрения - XML ​​- это то, что вам нужно научиться любить)

Другие вопросы по тегам