Resin's `pomegranate' - автоматическая загрузка зависимостей maven jar для проекта - но как создать для них jar с pom.xml?
Java-сервер Resin имеет удобную функцию, которую они называют pomegranate ( http://www.caucho.com/projects/pomegranate/), которая позволяет просто помещать различные зависимости jar в каталог сервера (project-jars/), а затем загружает их для веб-приложение из файла pom.xml.
Вопрос в том, как мне поставить банки на проектные банки из смолы? (просто копирование их не работает)
Подробности:
У меня есть рабочий проект с Maven, со всеми зависимостями, настроенными в файле проектов pom.xml. Я могу построить войну веб-приложений и т. Д.
Я скопировал файлы jar в проектные банки смолы /, поскольку они были сгенерированы maven для этого конкретного веб-приложения.
Когда я разворачиваю войну, смола замечает pom.xml и пытается разрешить зависимости; к сожалению, он не может найти никаких артефактов в своем хранилище (project-jars).
Я полагаю, это потому, что во всех помещенных мной банках нет файлов META-INF/maven/pom.xml, упакованных в них. Это просто обычные банки, подобные тем, что загружены maven.
На веб-сайте граната говорится, что смола сканирует проектные фляги для фляг с файлами pom.xml, чтобы определить их версии.
Как мне создать jar-файлы с включенными файлами pom.xml?
Или я должен вручную скопировать файлы foo-bar-1.0.pom из репозитория на моем компьютере devel в каталог project-jars смолы? (какой вид превосходит цель всей автомагической магии)
Спасибо за ответ,
С наилучшими пожеланиями
Гораций
1 ответ
Мое понимание спецификации граната Draft:
Контейнеры сервлетов могут использовать гранат в качестве дополнения к
WEB-INF/lib
со следующими преимуществами:
- Совместно используемые файлы.jar в общем хранилище, упрощая управление и уменьшая размеры.war
- Разрешение зависимостей библиотеки, включая возможность обрабатывать несовместимости субмодулей
- Знакомые файлы Maven pom.xml, чтобы воспользоваться современными методами разработки.
- Дополнительная интеграция с контейнерами веб-приложений Servlet
- Дополнительная интеграция с менеджерами Java CanDI (JSR-299)
[...]
Веб-приложение может содержать дополнительный
WEB-INF/pom.xml
объявление собственных зависимостей веб-приложения.
Поэтому я думаю, что идея состоит в том, чтобы пометить зависимости как "предоставленные" в войне. pom.xml
и добавить их в WEB-INF/pom.xml
для размещения на смоле. Я не проверял это, хотя, так что я могу ошибаться.
На самом деле, этот гранат выглядит интересно, но я пока не совсем понял. Хотя я понимаю его преимущества, кажется, что WAR не переносим, что является большим недостатком. Я буду копать это немного дальше...
(РЕДАКТИРОВАТЬ: я помещаю ответ на комментарий от ОП ниже)
Честно говоря, я не нахожу черновой вариант спецификации. Тем не менее, я нашел этот пост о модулях граната в блоге Caucho, в котором подробно рассказывается, как заставить его работать для веб-приложения:
Pomegranate предназначен для решения проблем с версиями модулей и загрузчиками классов с точки зрения корпоративных приложений. Несмотря на то, что мы за кулисами немного фокусируемся на загрузке классов, перспектива для разработчиков довольно проста и чиста:
- удалить банки из вашего.war
- поместите их в директорию Resin's Project-Jars
- объявить JAR-зависимости в pom-файлах Maven
- импортируйте их в свое веб-приложение с помощью WEB-INF/pom.xml или в свой файл wax-web.xml
По крайней мере, я понимаю эти шаги, и они отвечают на ваш вопрос: вы должны вручную удалить файлы jar в каталоге Resin's project-jars. Это не то, чего я ожидал, но я думаю, что неправильно понял, что такое гранат. Если я не ошибаюсь, гранат - это своего рода альтернатива OSGI, речь идет о связывании модулей и загрузке классов вуду. Он использует соглашения Maven для описания зависимостей, но речь идет не об управлении зависимостями.