Настройте maven-shade-plugin для включения src/main/webapp

Я работаю с простым проектом с каталогом webapp в стандартном месте (src/main/webapp). По какой-то причине похоже, что maven-shade-plugin не включает это в окончательный сгенерированный jar - по умолчанию он будет включать только артефакты src/main/resources. Я попытался использовать следующую конфигурацию, но безуспешно:

<configuration>
 <artifactSet>
  <includes>
   <include>*</include>
   <include>*:*</include>
  </includes>
 </artifactSet>
</configuration>

Любые предложения о том, как это сделать без необходимости перемещать src/main/webapp в src/main/resources/webapp?

Спасибо.

Ойген.


person Eugen    schedule 04.05.2012    source источник
comment
насколько я знаю, эти плагины используются для объединения банок, а не для военных пакетов.   -  person Farid    schedule 04.05.2012


Ответы (6)


Вы пытались обновить раздел сборки, указав путь к ресурсу?

<build>
        <resources>
            <resource>
                <directory>src/main/webapp</directory>
           </resource>
        </resources>
</build>

РЕДАКТИРОВАТЬ

Как уже было сказано, цель тени не в том, чтобы воевать с пакетами.

person Yanflea    schedule 04.05.2012
comment
Однако Shade пригодится при создании jar со встроенным веб-сервером, где необходимы ресурсы. - person h7r; 21.06.2014
comment
Я, очевидно, не заметил в своем собственном комментарии, что войны могут иметь встроенные серверы так же, как и банки. - person h7r; 21.06.2014

Вам нужно поместить его в src/main/resources/webapp или явно указать соответствующее местоположение, чтобы оно было правильно перехвачено. Раздражает, но это работает.

Для тех, кто спрашивает, почему такие вещи имеют смысл делать, это типичная установка для jar со встроенным веб-сервером, таким как Jetty.

person Matthew Daumen    schedule 24.01.2014
comment
Согласно принятому и одобренному ответу @Yanflea, неверно, что вам нужно помещать файлы в папку src/main/resources/. Ты уверен насчет этого? - person Zero3; 09.01.2016

Я использую плагин ресурсов, чтобы переместить веб-приложение в папку классов.

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.0.2</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>compile</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${basedir}/target/classes/webapp</outputDirectory>
                <resources>
                    <resource>
                        <directory>src/webapp/dist</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

Таким образом, я могу разместить папку с моим веб-приложением в любом месте, определить каталог назначения, и он будет включен в мою затененную банку.

person joerno    schedule 10.08.2017

Похоже, вы хотели бы упаковать исходники в пакет. Существует maven-source-plugin, который создаст банку, содержащую исходные файлы. Кроме того, это обычно делается во время цикла выпуска. Как уже упоминалось, целью maven-share-plugin является объединение jar-файлов (их содержимого; ключевое слово: ueberjar).

person khmarbaise    schedule 04.05.2012

Я бы использовал военный плагин http://maven.apache.org/plugins/maven-war-plugin/faq.html#attached, чтобы создать банку проекта веб-приложения. Вы уже установили <packaging>war</packaging>?

person artbristol    schedule 04.05.2012

Какой смысл добавлять ресурсы вашего веб-приложения в JAR? Это как ВОЙНА.

Измените тип упаковки на war и все заработает.

person vitorrrr    schedule 04.05.2012
comment
Вероятно, вам следует опубликовать свой запрос на разъяснение в качестве комментария к исходному вопросу, а не в качестве ответа на него. - person Zero3; 09.01.2016