Какое самое элегантное решение для управления различными внешними библиотеками Java? - PullRequest
4 голосов
/ 16 сентября 2009

Возможно, причина, по которой я затормозил изучение Java до сих пор, заключается в том, что я НЕНАВИЖУ , как Java обрабатывает внешние библиотеки. Я застрял, держа их в одном месте, добавляя их по отдельности, исправляя проблемы с версиями и каждый раз, когда я перемещаю / переименовываю их, а также копирую и пишу путь к классам снова и снова каждый раз, когда выпускаю приложение Java.

Должно быть элегантное решение для всего этого. Я храню все свои библиотеки (независимо от задачи, платформы или других) в их собственной маленькой папке внутри папки "lib" в моей папке для разработки, примерно так:

Dev
  -lib
    +JS-jQuery
    +Flex-Degrafa
    -Java-Xerces
      +Xerces-1.2.3
    +More libraries

Я могу использовать Netbeans или Eclipse для Java-разработчика, но ни один из них не обеспечивает очень упрощенного (и не говоря уже о идиотском) способа управления всем этим.

Буду очень признателен за толчок в правильном направлении или за онлайн-статью / руководство по этому вопросу.

Ответы [ 5 ]

7 голосов
/ 16 сентября 2009

Вы можете использовать Ant + Ivy или Maven для управления зависимостями вашей библиотеки.

6 голосов
/ 16 сентября 2009

Если вам нужно только управление зависимостями, и вы довольны остальным процессом сборки, я бы использовал Ivy , поскольку он может незаметно управлять вашими зависимостями, оставляя существующий процесс сборки неповрежденными. Существует плагин для Eclipse под названием IvyIDE , который вносит ваши зависимости через контейнер classpath.

Maven 2 имеет более крутой кривой обучения, но предоставляет гораздо более богатый набор функций для создания ваших проектов и интеграции Eclipse через m2eclipse или IAM .

Лично я использую Maven, поскольку у меня большое количество проектов для работы, а Maven особенно подходит для эффективной разработки множества проектов.

Взгляните на вводную документацию, чтобы узнать, что работает для вас.

2 голосов
/ 16 сентября 2009

Поддержка Maven в Netbeans 6.7.1 достаточно хороша и поставляется из коробки с IDE.

Аддон Eclipse был настолько разочаровывающим, что я дал Netbeans еще одну попытку.

Третий вариант помимо параметров ChssPly76 - использовать Ant с Maven Ant Tasks . Я не знаю, назову ли я какое-либо из этих решений особенно «элегантным», но они избавляют вас от необходимости управлять своими собственными переменными lib / directory и classpath.

1 голос
/ 16 сентября 2009

Если вы работаете в Linux, вы можете установить библиотеки Java с APT или RPM.

В противном случае я обычно проверяю предварительно скомпилированные JAR-файлы в каталоге lib в репозитории контроля версий моего проекта и проверяю, чтобы имена файлов JAR включали полную информацию о версии. Например. lib / foo-1.5.6.jar, а не lib / foo.jar.

Чтобы избежать необходимости вручную устанавливать classpath перед запуском приложения, вы можете установить classpath в Манифестах самих JAR, чтобы определить зависимости каждого файла JAR. JVM будет следовать всем зависимостям при загрузке классов.

0 голосов
/ 16 сентября 2009

Maven часто доставляет больше хлопот, чем стоит, но возможность открыть проект maven непосредственно в таких средах разработки, как IntelliJ, превосходна. Например, IntelliJ загрузит все зависимости и предоставит их без необходимости сначала запускать сборку или команду mvn, а затем обновление проекта. Также нет необходимости заново генерировать проект каждый раз, когда добавляется зависимость. Я работаю с несколькими разработчиками Eclipse, которые перешли на IntelliJ только для этого.

Однако, одним из недостатков Maven является то, что многие библиотеки (или версии библиотек) недоступны в общедоступных репозиториях. Поэтому часто бывает необходимо создать локальный репозиторий, такой как archiva . В ant это просто вопрос добавления его в каталог lib в репозитории.

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

Наконец, buildr - отличный способ использования управления зависимостями и подключаемых модулей Maven, а также поддержки специальных задач.

...