Java Build;с этими требованиями, что будет хорошим выбором? - PullRequest
0 голосов
/ 11 ноября 2011

Это относится к созданию проекта Java.

Так что я немного запутался в моих возможностях здесь.

Мои требования (это небольшой проект):

  • Необходимо скомпилировать проект Java с конкретными / настраиваемыми аргументами компилятора

  • Проект имеет собственные библиотеки, которые необходимо включить

  • нужно скомпилировать класс javascript-> java с помощью компилятора javascript Rhino (https://developer.mozilla.org/en/Rhino/JavaScript_Compiler)

  • После сборки мне нужно запустить другую команду: ProGuard (http://proguard.sourceforge.net/)

  • запустить javadocs

  • Упаковать все в Jar (включая внешние данные, например, изображения, xml, ini и т. Д.)

  • Создать / создать веб-запуск .jnlp.

  • Было бы оптимально работать под Win и Linux.

  • это хобби-проект, поэтому не стоит тратить недели на изучение/ управление системой сборки. Максимум 8-12 часов инвестиций начинают заканчиваться (иначе лучше продолжать делать все вручную).

  • кстати, моя IDE - Eclipse, если это имеет значение;хороший встроенный плагин был бы хорош - но не обязателен.

До сих пор я думаю, что Ant и Maven являются основными двумя используемыми системами сборки.Мне очень неясно, какой из них мне следует использовать или как они отличаются?

Другим вариантом будет «make» под linux (или, может быть, cygwin).Я использовал его только один раз, но мне показалось довольно быстро начать работать.Это хороший вариант для Java или этот проект?Какие минусы сделать?Почему бы больше Java-разработчикам не использовать его?

Другие варианты?

Ответы [ 2 ]

4 голосов
/ 11 ноября 2011

В двух словах: потратьте 12 часов на изучение и использование Ant.

Maven хорошо чувствует себя из коробки, очень легко начать работу и аккуратное управление зависимостями, но вЧтобы настроить строку pom.xml (файл сборки maven вашего проекта) для соответствия вашим потребностям, потребуется больше усилий, чем если бы вы использовали Ant.

Для удовлетворения некоторых ваших конкретных требований:

  • вы можете использовать <compilerarg> элементы с задачей <javac>
  • для родных библиотек, вы можете добавить их с помощью: <sysproperty> и key="java.library.path"
  • использовать Rhino с Ant (/2785401/ispolzuya-nedavnii-rhino-v-stsenarii-muravya)
  • существует задача Proguard для Ant (http://proguard.sourceforge.net/index.html#/manual/ant.html)
  • для javadoc Ant поставляется с задачей <javadoc> из коробки
  • задача <jar> Ant чрезвычайно проста в упаковкевсе до
  • есть задача <jw:jnlpwar>, доступная в [проекте Задача веб-запуска Ant] по адресу (http://ant -jnlp-war.sourceforge.net)
  • Вездесущий Ant, онработает практически на всех основных платформах (Linux, Unix, Windows, MacOS)
  • с большим количеством документов и примеров, доступных в Интернете, вы быстро получите Ant, и те часы, которые вы потратите на его изучение, вероятно, окупятся в течение нескольких недель после использования его для ваших сборок..
  • Eclipse интегрируется с Ant "из коробки" (http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.platform.doc.user/gettingStarted/qs-81_basics.htm)

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

Я должен, вероятно, просто упомянутьдва новых имени в инструментах сборки Java (и CI): Hudson и Jenkins .Они довольно недавние и на них интересно смотреть, но я бы определенно не рекомендовал их вам и вашему проекту на этой ранней стадии.

Примечание: извинения за отсутствие реальных ссылок (разрешено только 2 ссылкиатм)

0 голосов
/ 11 ноября 2011

Maven является лучшим выбором здесь, поскольку он имеет интеграцию для всех этих

так что дерзайте .

Здесь приведены быстрые ссылки, позволяющие сэкономить дополнительный час на обучении maven;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...