#maven #maven-war-plugin
#maven #maven-war-плагин
Вопрос:
У меня есть сторонние jar-файлы в моем веб-проекте, размещенные по адресу /src/main/webapp/WEB-INF/lib/
Я упомянул зависимость для всех требуемых JAR в pom.xml . Теперь, поскольку зависимости определены в POM, файлы JAR будут автоматически упакованы в lib
папку.
- Я хочу исключить все JAR из
lib
. - Файлы JAR зависимостей должны быть упакованы внутри библиотеки при сборке WAR
Я НЕ МОГУ УДАЛИТЬ LIB
Из WEB-INF, ПОТОМУ что он ИСПОЛЬЗУЕТСЯ В ЛОКАЛЬНОЙ РАЗРАБОТКЕ
Это то, что я пробовал до сих пор:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<packagingExcludes>META-INF/context.xml</packagingExcludes>
<webResources>
<resource>
<directory>src/main/webapp/WEB-INF/lib</directory>
<excludes>
<exclude>**/**</exclude>
</excludes>
</resource>
</webResources>
</configuration>
</plugin>
Есть идеи?
Комментарии:
1. нет причин использовать этот
lib
каталог дляlocal development
того, чтобы Maven кэшировал все локально, а Eclipse, Idea и Netbeans все знают, как извлекать зависимости оттуда. Если вы разрабатываете вwebapps
каталоге Tomcat, то это ужасная практика. Maven может легко создавать и развертыватьwar
файл во всех популярных контейнерах J2EE.
Ответ №1:
Это должно быть «packagingExcludes» вместо «warSourceExcludes»:
<configuration>
<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
....
</configuration>
Из http://maven.apache.org/plugins/maven-war-plugin/examples/skinny-wars.html :
В версии 2.1-alpha-1 это было неправильно названо warSourceExcludes
Ответ №2:
Попробуйте это:
<configuration>
<warSourceExcludes>WEB-INF/lib/*.jar</warSourceExcludes>
....
</configuration>
Однако я согласен с Джарродом в том, что хранить ваши jar в WEB-INF/lib
«вручную» — плохая практика. Я использовал это раньше, чтобы избежать того, чтобы jar, поступающие как зависимость, были упакованы, чтобы иметь возможность впоследствии их переупаковывать.
Комментарии:
1. Можете ли вы попробовать опустить некоторые другие детали конфигурации? Только для тестирования? Возможно, существует какой-то конфликт, но если вы используете только этот параметр, он действительно работает.
Ответ №3:
у вас не должно быть ничего в вашем WEB-INF/lib
каталоге для начала. Если вы используете Eclipse, вы можете указать ему, чтобы он создавал свой проект из pom.xml
, и он будет знать, что нужно искать в ~/.m2/repository
зависимости, Intellij IDEA также делает это. Ввод зависимостей в WEB-INF/lib
виде сводит на нет цель использования Maven для управления зависимостями. Что происходит, когда зависимости в pom.xml
не синхронизированы с версиями в WEB-INF/lib
Комментарии:
1. Да, я знаю, что неправильно что-либо иметь в
WEB-INF/lib
, но я создаю здесь устаревший проект, и очень сложно удалить библиотеки из этого расположения (это повлияет на локальную разработку)2. первый шаг в работе с устаревшей системой сборки — оплатить технический долг и исправить его для сборки за один шаг, вы получите выгоду немедленно, и все, кто придет после вас, также получат выгоду, экономя деньги и время компании.