Я ищу утилиту make для создания больших программ Java. Я уже знаю об ANT, но хочу посмотреть, что еще доступно.
В идеале он должен быть в состоянии справиться со странностями каталога пакетов .java ->. Class, которые засоряют GNU Make.
Win32, но кроссплатформенность - это плюс.
Обновлено: Я вижу некоторые недостатки использования ANT, поэтому я хотел увидеть другие варианты, хотя, вероятно, я все равно буду использовать его, просто потому, что он работает.
Я бы использовал gnu make, но он не может понять, где в конечном итоге окажется файл .class для файла .java с объявлением пакета.




Если вы начинаете новый проект, вы можете изучить знаток. Поначалу это довольно сложно, но он обрабатывает кучу вещей за вас, включая зависимости.
Если у вас уже есть проект, для которого вы хотите создать файл сборки для, то у меня нет никаких рекомендаций, кроме вышеупомянутого муравья.
Это не столько ответ, сколько вопрос. ANT - это стандартный способ построения Java. Он хорошо работает с Java, множеством инструментов Java и круиз-контролем. Так зачем вам попробовать что-нибудь еще?
Если у вас нет крайнего случая, который не покрывает ANT, я бы рекомендовал вам придерживаться ANT.
Конечно, я был бы счастлив, если бы более знающий человек указал, почему мое отношение глупо и почему есть хороший повод искать альтернативы;)
Ant дает команду построить все, но это потому, что javac достаточно умен, чтобы этого не делать. Конечно, XML уродлив, но мне не нужно на него смотреть, если я не хочу. У меня есть возможность позволить моей среде IDE справиться с этим, или я могу настроить ее, если захочу.
Итак, основное преимущество ant в том, что вам не нужно на него смотреть, и ему не нужно на самом деле разумно строить ваш проект. Честно говоря, я могу сделать это с помощью сценария.
Одна альтернатива - бра, если вы хотите что-то довольно легкое. Я немного использовал его и обнаружил, что его довольно легко понять, особенно если вы уже знаете синтаксис Python. Другой вариант - знаток, но это просто нет в любом случае. Однако он предоставляет множество дополнительных возможностей, таких как помощь в управлении документами. Однако я бы не стал называть это заменой make;)
Ну, очевидно, есть классические утилиты make (make, gmake, nmake), есть также (я думаю) некоторые системы сборки, написанные на Ruby или, может быть, на Python. Они не являются специфичными для Java, а просто скриптовыми системами сборки.
Но ANT уже 8-9 лет является лидером этой группы, и, с точки зрения основ, начать с него довольно легко.
Раньше make from была особенно ужасной для компиляции java, потому что обычно она вызывала компилятор javac для каждого файла индивидуально. ANT этим не страдает, и, возможно, make можно было бы модифицировать, чтобы этого не делать. Но это был один из элементов ANT, который сделал его настолько популярным. Это было просто быстро.
Я понимаю, что ANT не может быть идеальным решением, но, безусловно, практичным.
GNU Make можно указать для создания нескольких файлов одновременно, используя синтаксис + target, который может быть создан программно. Также можно указать цель, подобную библиотеке, которая восстанавливает только измененные исходные файлы, но все в одной командной строке.
то же самое касается большинства других утилит make, к сведению
Забудьте про муравьев !!
Apache Maven - это путь, если вы спросите меня.
Больше всего мне нравится встроенная функция управления зависимостями. Это означает, что вам не нужно проверять сторонние JAR-файлы в своем проекте системы управления версиями.
Вы указываете свои зависимости в maven POM (объектная модель проекта - это в основном XML-описание вашего проекта), и maven автоматически загружает, компилирует их и упаковывает в ваше приложение.
Другие действительно приятные особенности: Публикация по управлению выпусками и распространению - Выполняйте выпуски с помощью консольных команд maven. Эта функция пометит вашу базу кода в системе управления версиями. Получите чистую копию, соберите ее и упакуйте для развертывания. Вторая команда загрузит его в ваш репозиторий для распространения среди других конечных пользователей.
Большой и постоянно растущий репозиторий библиотек, уже использующих maven - В КАЖДОМ проекте Apache используется maven. НАГРУЗКИ больше на борту. Смотрите сами, вот основное репо
Возможность разместить собственное репо. - Где вы можете выпускать свои собственные сборки, а также загружать JAR-файлы, которых нет в других общедоступных репозиториях (например, большинство JAR-файлов SUN)
Если вы делаете что-то стоящее, вам нужно разместить свой собственный репозиторий с Maven, иначе у вас будет несколько единых точек отказа (репозитории других людей). Кроме того, документация Maven ... отсутствует.
У него есть свои острые углы, но, в конце концов, я обнаружил, что maven, безусловно, лучший инструмент для сборки Java / менеджер зависимостей. Если бы не maven, я бы некоторое время назад сошел с ума от java.
Я преобразовал Муравей в Maven 2 и с тех пор не оглядывался. Ant и Maven 2 разных способа построения. С помощью Ant вы даете инструкции, как строить объекты. В то время как с Maven 2 вы говорите, что хотите построить. Если у вас есть существующая сборка Ant, xml, вы можете сделать первый шаг в рефакторинге сборки, заключив ее в Maven 2 pom.xml.
Ant и Maven - определенно два стандарта. Если вы уже знакомы с Ant и хотите управлять зависимостями, которое поставляется с Maven, вы можете взглянуть на Плющ.
Единственное, чего не хватает как в Ant, так и в Maven, - это настоящие управляющие структуры в ваших сценариях сборки. Вы можете загрузить плагины для Ant, которые предоставляют некоторые из этих элементов управления, но (опять же, если вы уже знакомы с Ant), вы можете взглянуть на Гант, который является оболочкой Groovy для Ant.
jmk. Он примитивен, но настолько мал, что вы можете встроить его в исходный файл .tar.gz и практически не менять его размер.
Увидел JMK, но не могу сказать, должен ли он просто заменить make, или он делает более интеллектуальные вещи с java, чем обычно делает make. Есть опыт работы с этим?
Это в значительной степени прямая замена make и имеет аналогичный набор функций. Чтобы решить вашу проблему с каталогами, вам нужно что-то, что анализирует исходный код Java.
Верно. Для компилятора C есть аргументы, которые правильно генерируют зависимости, разрешая пути так же, как и при сборке. В идеале у javac было бы то же самое.
1) ant + ivy очень хорош, если у вас уже есть инвестиции в ant. Вам не нужно переходить от муравья к maven только для того, чтобы получить полезные сведения о зависимостях.
2) гант и муравей: как они сравниваются: http://java.dzone.com/articles/ant-or-gant-part-1
3) http://www.gradle.org/ - использует groovy!
BR,
~ А
Если в последнее время Maven действительно не улучшился, я бы от этого не стал. Если, конечно, у вас нет какого-то монстра-мультипроекта с миллиардом зависимостей.
После того, как ему надоело смотреть на совершенно бесполезные и бесполезные ошибки при попытке выполнить простейшие действия (например, FTP файл war на сервер), Maven был отброшен, а Ant счищен пылью. С тех пор я не оглядывался.
Мне нравится использовать ant с ant4eclipse. Это позволяет мне настраивать зависимости в eclipse, выполнять сборки разработки и тестирование в eclipse, а также выполнять непрерывные сборки с использованием ant.
Это хорошее решение, но я бы предпочел что-нибудь более автономное.
Я все время использую ANT. Это связано с тем, что я разрабатываю веб-приложения с помощью Google Web Toolkit (GWT), который имеет дополнительный этап компиляции Java на стороне клиента в сценарий Java. С Ant все, что мне нужно было знать, это как работает GWT, а затем я сам управляю сборкой. С maven мне нужно подождать, пока кто-нибудь напишет плагин. или я сам напишу. Есть вероятность, что появятся другие фреймворки и инструменты, которые не следуют обычным соглашениям. Мне не нужно постоянно искать плагины maven. С помощью ant я могу делать все, что захочу, прозрачным образом. Мне также нравится писать файлы xml. (я должен, потому что мне нужно написать несколько - web.xml, application.xml, persistence.xml, SqlMap.xml, dataset.xml и т. д. Моя точка зрения _ XML - это то, что вам нужно научиться любить)
муравей был лидером на протяжении многих лет. Но поскольку файл build.xml основан на xml, он является подробным очень. Управление зависимостями может быть достигнуто путем связывания его с плющ.
знаток стремится предоставить из коробки то, что дает тандем муравей + плющ, это приятно, пока работает. Если он перестанет это делать и вам придется выяснить, где он портит управление зависимостями, это, скорее всего, станет худшим адом, который вы можете себе представить. Также это pom.xml ... написано в xml.
сбт - это королевский инструмент сборки scala, использующий ivy для управления зависимостями, а файлы сборки записываются в scala DSL. Довольно зрелый, но диалект scala может вам не по душе.
Файлы сборки строитель указаны в ruby. Совместим с репозиториями maven и имеет собственное управление зависимостями. Также присутствует интеграция с муравьями.
Gradle использует groovy для своих файлов сборки. Помимо поддержки maven или ivy, теперь у него есть собственный менеджер зависимостей после того, как он использовал ivy в прошлом и не был удовлетворен. Полная интеграция с муравьями. На сегодняшний день имеет самый простой синтаксис.
ant, ivy, maven, buildr - это проекты apache.
TL; DR
Отметьте Gradle или строитель.
хороший довольно исчерпывающий список, спасибо. Я взгляну на gradle и, возможно, вкратце о sbt.
ANT слишком тяжелый, XML грубый, и почти невозможно заставить его избежать перестройки всего.