Каковы некоторые полезные утилиты java?

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

В идеале, он должен иметь возможность обрабатывать странную директорию каталога .java → . class, которая вытесняет GNU Make.

Win32, но кросс-платформа - плюс.

EDIT: Я вижу некоторые минусы использования ANT, поэтому я хотел увидеть другие параметры, хотя я, вероятно, в конечном итоге все равно его использую, только потому, что он работает.

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

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

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

Забудьте ANT!!

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

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

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

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

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

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

Ответ 4

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

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

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

Ответ 5

Один из вариантов - scons, если вы хотите что-то очень легкое. Я использовал его немного и нашел, что это довольно легко понять, особенно если вы уже знаете синтаксис python. Другой вариант - maven, но это не так просто. Однако он предоставляет множество дополнительных возможностей, таких как помощь в управлении документами. Я бы не стал упоминать об этом как о замене замены;)

Ответ 6

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

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

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

buildr файлы сборки указаны в ruby. Совместим с репозиториями maven и приносит им собственное управление зависимостями. Ant также существует интеграция.

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


ant, плющ, maven, buildr - это проекты apache.


TL; DR

Отметьте gradle или Buildr.

Ответ 7

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

Ответ 8

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

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

Ответ 9

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

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

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

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

Ответ 10

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

Ответ 11

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

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

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

BR,
~ А

Ответ 12

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

Ответ 13

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