Легкие войны и глобально доступные библиотеки

Я начал создавать свое веб-приложение, используя архитектуру быстрого запуска JBoss7.1.

Мне это нравится, но теперь мне нужно добавить в проект несколько библиотек, поэтому я добавляю несколько зависимостей в pom.xml. Например, это для JasperReports:

<dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>5.0.0</version>
        </dependency>

И так далее для других библиотек. К сожалению, после сборки моего проекта я заметил, что размер файла war, созданного "mvn package", составляет.... 36 МБ?!? Это слишком, я должен загрузить эту штуку на удаленный сервер, быстро!

Весь громоздкий материал хранится внутри /WEB-INF/lib и действительно представляет собой набор JAR (библиотеки, которые я включил в качестве зависимостей).

Как лучше всего не включать каждый раз эту ненужную полезную нагрузку в мою войну?

Я предполагаю, что мне следует включить JAR-файлы где-нибудь в среду JBoss и объявить зависимости maven по-другому, может быть... но как?


person Fabio B.    schedule 03.02.2013    source источник


Ответы (1)


Вы можете использовать Jboss как 7-модульную систему, чтобы поставить некоторую зависимость в качестве модуля JBoss, убирающего войну.

Пример создания и использования модуля вы можете посмотрите на этот пост в блоге.

В файле pom.xml вы должны добавить элемент scope для модульного jar-файла со значением provided (должен уже присутствовать для зависимостей Java EE). Это скажет мавену, что банка будет предоставлена ​​окружающей средой, не нужно ставить их на войну.

Этот метод сделает вашу войну легче, но вы потеряете опыт управления зависимостями времени выполнения. Вам нужно будет убедиться, что у вас есть правильная версия на всех серверах, на которых будет развернуто приложение.

person Kazaag    schedule 03.02.2013
comment
Спасибо, но что вы имеете в виду под модулем? Нужно ли мне создавать новый проект только с зависимостями библиотек и добавлять его в качестве зависимости к основному проекту приложения? - person Fabio B.; 04.02.2013
comment
Модуль JBoss — это новый способ, с помощью которого JBoss обрабатывает изоляцию загрузки вызовов для различных частей (внутренних, внешних) сервера приложений, чтобы предотвратить проблемы с загрузкой классов. Вам нужно поместить банку в определенную папку с правильным XML-файлом, чтобы создать модуль. В XML-файле развертывания JBoss в вашей войне WEBINF необходимо ссылаться на модуль. Все объясняется по ссылке, которую вы можете найти в моем посте. - person Kazaag; 04.02.2013
comment
Вы можете посмотреть на этот вопрос с более подробным ответом: stackoverflow.com/questions/8289813/ - person Kazaag; 04.02.2013