2009-11-02 12 views
1

У Resin java-сервера есть аккуратная функция, которую они называют pomegranate (http://www.caucho.com/projects/pomegranate/), которая позволяет просто поместить различные зависимости jar в каталог сервера (project-jars /), а затем загружает их для веб-приложения из своего файла pom.xml.«Гранат граната» - автомагистрально-загрузочная зависимость флага для проекта - но как создать банки с pom.xml для них?

Вопрос: как я должен помещать банки в проектные банки? (Просто копируя их не работает)

Детали:

у меня есть рабочий проект с Maven, все зависимости настроены в проектов pom.xml файлов. Я могу построить войну webapp и т. Д.

Я скопировал файлы jar в контейнеры проекта смолы /, поскольку они были созданы maven для этого конкретного веб-приложения.

Когда я развертываю войну, смоляные пятна pom.xml и пытается разрешить зависимости ; к сожалению, он не может найти артефактов в своем репозитории (проект-банки).

Я полагаю, что это связано с тем, что все банки, которые я там положил, не содержат Файлы META-INF/maven/pom.xml, упакованные в них. Они просто обычные банки , как и те, которые загружают maven.

На веб-сайте граната они говорят, что смола сканирует проектные банки для банок с файлами pom.xml, чтобы определить их версии.

Как создать банки с включенными файлами pom.xml?

Или мне нужно вручную скопировать файлы foo-bar-1.0.pom из хранилища на моем устройстве devel в каталог проектов-контейнеров смолы? (Какой тип бьет цель всех авто магии)

Спасибо за ответ,

наилучшими пожеланиями

Горация

+0

Похоже, что гранатомета больше не заботится о Кошо. –

ответ

2

Мое понимание Pomegranate Draft specification является то, что:

Контейнеры с сервлетом могут использовать гранат в качестве удлинителя до WEB-INF/lib со следующими преимуществами:

  • Shared .jar файлов в общем хранилище, что упрощает управление и сокращение .war размеры разрешения библиотеки зависимостей
  • , в том числе способности обрабатывать подмодуль несовместимости
  • Знакомых Maven pom.xml файлов, чтобы воспользоваться существующих методов развития.
  • Возможность интеграции с Servlet веб-приложений контейнеры
  • Возможность интеграции с Java Канди (JSR-299) Менеджеры

[...]

Веб-приложение может содержать дополнительный WEB-INF/pom.xml декларирование собственные зависимости веб-приложения.

Так что я предполагаю, что идея состоит в том, чтобы отметить зависимости, как «предусмотренные» в войне pom.xml и добавить их в WEB-INF/pom.xml для развертывания на Ресина. Я не тестировал это, так что, возможно, я ошибаюсь.

На самом деле этот гранат выглядит интересным, но я пока не понимаю его полностью. Хотя я понимаю его преимущества, похоже, что WAR не переносится, что является большим недостатком. Я копать немного дальше ...

(EDIT: Я ставлю ответ на комментарий от ниже OP)

Чтобы быть честным, я не нахожу спецификации проекта очень четко , Тем не менее, я нашел этот pomegranate modules пост на блоге Caucho, что детализирует немного больше, как заставить его работать на веб-приложение:

Гранат предназначен для решения модуля управления версий и загрузчика классов вопросов от предприятия-приложений перспективного , Несмотря на то, что мы делаем немного магии загрузчика классов позади сцен, перспектива разработчик довольно простой и чистый:

  1. удалить банки с вашего .WAR
  2. поместите их в каталог проекта-баночках Ресина
  3. зависимости объявить банку в пом файлах Maven
  4. импортировать их на свой веб-приложение с WEB-INF/pom.xml или в вашей смолой web.xml

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

+0

, но как смогите Смола фактически получить банки, чтобы удовлетворить зависимости? Будут ли они загружать их, как делает maven? Или вы должны предоставить их в/project-jars/dir, которые документация вызывает «репозиторий», но не говорит, что это за структура. Просто бросать в банки не получится. –

+0

Я добавил подробности к моему первоначальному ответу, чтобы рассмотреть это. –