Пакет Maven не включает все JAR-файлы зависимостей

1

Я создаю 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, но в пакете я вижу только один.

Все мои зависимости имеют "компилируемую" область.

Почему это происходит?

С уважением.

Теги:
maven
jar
dependencies

3 ответа

0
Лучший ответ

Хорошо, я не заметил, что недостающие зависимости были "включены" в другие проекты, которые у меня были, и эти проекты ожидали, что эти зависимости будут предоставлены.

Вот почему эти зависимости проявлялись в "эффективном пом" как "обеспеченные".

Я заблокировал зависимости в моем 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 

Я чувствую себя глупым...

Спасибо за вашу помощь.

1

по умолчанию он не упаковывает зависимые библиотеки в ваш пакет, вам нужно указать плагин для этого

Видеть

  • 0
    Но это в том числе некоторые зависимости, а другие нет. Все с одинаковой областью применения.
  • 0
    Конечно, для jar-файла, но для войны он должен поместить все maven-зависимости в WEB-INF / lib по умолчанию, если только вы не добавили тег packagingExcludes в ваш раздел maven-war-plugin .
Показать ещё 4 комментария
0

Вы также можете быть заинтересованы в maven-shade-plugin - он делает большую банку из всех ваших зависимостей.

http://maven.apache.org/plugins/maven-shade-plugin/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню