Папка с файлами JAR для проектов eclipse

Я пытаюсь создать централизованную папку (в своего рода «метапроекте» в моем рабочем пространстве eclipse) для часто используемых файлов JAR для проектов, на которые есть ссылки в этой рабочей области. Он должен работать аналогично папке WEB-INF / lib для веб-проектов, но также применяться к не веб-проектам и автоматически сканировать и добавлять все файлы jar в эту папку.

Я попытался создать пользовательскую библиотеку с этими файлами jar и сослаться на них в проекте, но мне все равно нужно вручную добавлять каждую новую банку в пользовательскую библиотеку (и не знаю, ссылаются ли на нее относительно absoulute) и Tomcat (WTP) похоже, не принимает эти файлы (Запуск от имени -> Запуск на сервере) в свой путь к классам (и я не хочу дублировать банки и помещать их в WEB-INF / lib). Любые идеи?


person Daff    schedule 28.07.2009    source источник
comment
э ... разве вы не должны иметь дело с файлами WAR с Tomcat? Они всегда используют WEB = INF / lib, как указано выше.   -  person Powerlord    schedule 28.07.2009
comment
Это не решит первую проблему наличия той же функциональности папки WEB-INF / lib для не веб-проектов. И я развертываю и запускаю веб-проект прямо из eclipse (поэтому я просто хочу каким-то образом добавить свою общую папку с файлами JAR в путь к классам Tomcat в конфигурации запуска, но, похоже, это не сработало)   -  person Daff    schedule 28.07.2009


Ответы (5)


+1 для Айви.

Если вы предпочитаете делать это в отдельном проекте в Eclipse:

Вы добавили «общий проект» в зависимости от других проектов (Путь сборки Java-> Проекты, затем Добавить). Но вы экспортировали банки «общего проекта»? (В общем проекте: Java Build Path-> Order and Export, затем проверьте все jar-файлы).

person fg.    schedule 28.07.2009
comment
+1 Экспорт jar-файлов в настройках проекта работает намного лучше, чем пользовательские библиотеки, тем более что вы можете поместить эти настройки в систему контроля версий, что невозможно с пользовательскими библиотеками. - person Aaron Digulla; 28.07.2009
comment
+1 Мне кажется, экспорт банок - это то, чего тебе не хватает - person Pablojim; 28.07.2009
comment
Спасибо, это выглядит лучше, чем пользовательская библиотека, и работает. По-прежнему нужно каким-то образом заставить Tomcat работать с этими библиотеками, но я надеюсь, что это сработает. Я обязательно посмотрю на Maven и / или Ivy. Надеюсь, мне удастся убедить других членов команды не использовать его. - person Daff; 29.07.2009

Я бы не рекомендовал этого делать, это становится головной болью, когда у вас много проектов с перекрывающимися зависимостями.

Что, если Project X использует commons-logging-1.0, но кто-то создает Project Z, которому вместо этого действительно требуется commons-logging-1.1? Вы хотите, чтобы в вашей центральной папке были копии одного и того же JAR для каждого возможного номера версии?

Используйте инструмент сборки, такой как Maven или Ivy, который будет загружать и обрабатывать зависимые JAR-файлы за вас. Плагин maven-eclipse неплохо справляется с генерацией _1 _ / _ 2_ файлов для Eclipse, которые автоматически помещают все зависимые JAR-файлы в путь сборки, а m2eclipse также хорошо справляется с зависимостями из Eclipse.

person matt b    schedule 28.07.2009

Я думаю, вам стоит серьезно взглянуть на Maven. Вы просто объявляете, от каких «артефактов» зависит каждый из ваших проектов, и Maven позаботится о том, чтобы получить JAR-файлы из репозитория, добавить их в путь к классам сборки и включить их в ваши WAR-файлы. А если вы хотите выполнить пакетную сборку, вам не нужно создавать файл Ant «build.xml»: просто запустите «mvn» из командного файла.

person Stephen C    schedule 28.07.2009

Я бы подумал об управлении этими вещами с помощью расширения Ivy для Ant, которое имеет то преимущество, что оно совместимо с maven, если вы когда-нибудь захотите пойти по этому пути.

Если просто выбросить все в большую кучу, у вас возникнут проблемы, так как вы столкнетесь с проблемами версии, когда у вас внезапно появятся два проекта, в которых один использует версию, доступную на момент создания THAT, а другой - версию с исправленными ошибками, а это не так. 100% совместимость.

person Thorbjørn Ravn Andersen    schedule 28.07.2009

Мой коллега реализовал контейнер classpath, который рекурсивно ищет jar-файлы в заданном каталоге в рабочей области, посмотрите http://openscada.org/news/dx/31.05.2010154336JREJ4U.htm

Сайт обновлений находится по адресу http://repo.openscada.org/p2/bob/R

Плагин лицензирован под LGPL V3, и вы можете найти исходный код в разделе http://pubsvn.inavare.net/openscada/modules/bob/trunk/

person Mauli    schedule 31.05.2010