Где хранить зависимости в портлете Liferay

Это, вероятно, очень простой вопрос, но управление зависимостями в Ja va - это кошмар для меня. У меня есть Liferay portelt (Liferay 6.05 развернут на JBoss AS 6), и я пытаюсь использовать в нем батик. Когда я ссылаюсь на batik.jar (и, возможно, некоторые другие файлы jar из дистрибутива) в Eclipse (свойства -> путь сборки -> добавить внешние файлы jar), IDE говорит, что все в порядке и не выдает ошибок.

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

Должен ли я скопировать эти банки в другое место? Perhpas где-нибудь в каталоге liferay? Или в каталог, куда распаковывается JBOSS AS?

Спасибо за любые советы. Я постараюсь прояснить ситуацию, если это звучит слишком запутанно...

1 ответ

Решение

Чтобы пользовательский портлет работал правильно, в WEB-INF/lib портлета или в глобальном classpath сервера что-то вроде /liferay-portal-6.0/jboss/server/default/lib или же .../lib/ext,

Поэтому, если вы разрабатываете много портлетов с использованием одних и тех же файлов зависимостей, вы можете хранить их в глобальном пути к классу Сервера, для этого потребуется перезапустить сервер, если потребуется изменить любой из этих файлов. Таким образом, все портлеты и даже портлеты liferay (если вы думаете об использовании классов батика в хуке или чем-то еще) будут иметь доступ к банкам батика.

Или же, если вы используете инструмент сборки, такой как ANT или MAVEN, тогда у вас может быть скрипт, который будет выполняться при создании файла WAR и который автоматически скопирует необходимые jar-файлы в ваш портлет WEB-INF/lib на войне.

Или вы можете скопировать их на свой WEB-INF/lib каждого портлета, который вы разрабатываете вручную:-)

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