2017-02-07 2 views
1

Я использую maven для создания файла уха с двумя EJB и несколькими веб-приложениями. Я бы хотел использовать тощие войны, потому что скорее всего последуют войны.Maven: пусть SkinnyWars сохраняет некоторые библиотеки

Как я понял, следующие будут удалены все файлы * .jar (кроме банок) EJB из/Lib каталога WEB-INF всех военных файлов:

<dependencies> 
    <dependency> 
    <groupId>my.domain</groupId> 
    <artifactId>project</artifactId> 
    <version>${project.version}</version> 
    <type>war</type> 
    </dependency> 

    <!-- Scope: Provided for skinnies. --> 
    <dependency> 
    <groupId>my.domain</groupId> 
    <artifactId>project</artifactId> 
    <version>${project.version}</version> 
    <type>pom</type> 
    </dependency> 
</dependencies> 

[..] 

<configuration> 
     <version>7</version> 
     <defaultLitBundleDir>lib/</defaultLitBundleDir> 
     <skinnyWars>true</skinnyWars> 
[..] 

У меня есть проблема в том, что, очевидно, также удалить все webjars. Webjars являются веб-библиотеки (CSS, JS и т.д.), которые упакованы внутри баночки файлов, как это:

с любым совместимым контейнером сервлетов 3, WebJars, которые находятся в каталоге/ WEB-INF Lib автоматически становятся доступный как статический ресурсов. Это работает, потому что все в каталоге META-INF/resources в JAR в WEB-INF/lib автоматически отображается как статический ресурс .

Источник: http://www.webjars.org/documentation#servlet3

Мне очень нравится эта идея. Итак, теперь, когда все jars перемещаются на myear!/Lib/webjar, содержащие файлы больше не отображаются. :-(

я не нашел вариант для skinnyWars, чтобы не исключить некоторые библиотеки (например, org.webjars: :).

Если есть другое решение, я хотел бы видеть свой вклад

+0

Нет, он не удалит все JAR из WAR. Только те, которые были указаны как зависимость в POM EAR. См. Http://maven.apache.org/plugins/maven-ear-plugin/examples/skinny-wars.html – Tunaki

+0

Ahh okay. Я просто включил войну снова с зависимостью: type = pom, из-за принципа DRY. Во всяком случае, я нашел другое решение, разместив его в одно мгновение. – Ben

ответ

0

Итак, было простое решение. Как вы видите из моего обновленного ответа, у меня была (почти) одинаковая зависимость военного файла дважды: один раз как type=war, другой - type=pom, поэтому все зависимости были включены в ухо и лишенное от войны.

Теперь я мог бы просто На самом деле, там были общие библиотеки, но я был thinking of DRY. Поэтому я хотел пойти с упомянутым решением. Кажется немного взломанным, но работает безупречно.

Но несколько мгновений спустя я нажал на wrong link in the webjars documentation for Servlet2, который я не использую.

Он работает, имея другую зависимость, которая состоит только из одного сервлета. Этот сервлет перезаписывает/передает запросы в соответствующие файлы в META-INF/resources. Я думал, что это может работать и для моей ситуации.

Таким образом, я включил зависимость, наблюдаемую в документации servlet2, и добавила соответствующие части в файл web.xml. И не работает так, как ожидалось.