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 предназначен для решения проблем с версиями модулей и загрузчиками классов с точки зрения корпоративных приложений. Несмотря на то, что мы за кулисами немного фокусируемся на загрузке классов, перспектива для разработчиков довольно проста и чиста:

  1. удалить банки из вашего.war
  2. поместите их в директорию Resin's Project-Jars
  3. объявить JAR-зависимости в pom-файлах Maven
  4. импортируйте их в свое веб-приложение с помощью WEB-INF/pom.xml или в свой файл wax-web.xml

По крайней мере, я понимаю эти шаги, и они отвечают на ваш вопрос: вы должны вручную удалить файлы jar в каталоге Resin's project-jars. Это не то, чего я ожидал, но я думаю, что неправильно понял, что такое гранат. Если я не ошибаюсь, гранат - это своего рода альтернатива OSGI, речь идет о связывании модулей и загрузке классов вуду. Он использует соглашения Maven для описания зависимостей, но речь идет не об управлении зависимостями.

Другие вопросы по тегам