Я создаю WAR для веб-приложения Java. Проблема в том, что внутри WAR, in/WEB-INF/lib было включено только несколько JAR.
Вот мой POM.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--
*****THIS IS AN AUTOGENERATED POM; PLEASE DO NOT MODIFY OR COMMIT ANY CHANGES*****
-->
<parent>
...
</parent>
...
<scm>
...
</scm>
<packaging>war</packaging>
<dependencies>
<dependency>
...
</dependency>
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
</plugin>
</plugins>
</build>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<javancss.fail>false</javancss.fail>
<checkstyle.fail>false</checkstyle.fail>
<cobertura.fail>true</cobertura.fail>
<pmd.fail>true</pmd.fail>
<findbugs.fail>false</findbugs.fail>
</properties>
</project>
В качестве примера у меня есть 5 зависимостей от разных модулей Spring, но в пакете я вижу только один.
Все мои зависимости имеют "компилируемую" область.
Почему это происходит?
С уважением.
Хорошо, я не заметил, что недостающие зависимости были "включены" в другие проекты, которые у меня были, и эти проекты ожидали, что эти зависимости будут предоставлены.
Вот почему эти зависимости проявлялись в "эффективном пом" как "обеспеченные".
Я заблокировал зависимости в моем POM, чтобы убедиться, что они имеют "компилируемую" область:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.0.6.RELEASE</version>
<scope>compile</scope>
</dependency>
..
</dependencies>
</dependencyManagement>
И теперь зависимости успешно включаются в WEB-INFO/lib, и она исправляла проблему получения следующей ошибки при каждом попытке развертывания:
java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
Я чувствую себя глупым...
Спасибо за вашу помощь.
по умолчанию он не упаковывает зависимые библиотеки в ваш пакет, вам нужно указать плагин для этого
Видеть
Вы также можете быть заинтересованы в maven-shade-plugin - он делает большую банку из всех ваших зависимостей.
packagingExcludes
в ваш разделmaven-war-plugin
.