Maven包不包括所有dependecy的JAR

时间:2014-04-23 18:13:44

标签: java maven jar dependencies maven-package

我正在为Java Web应用程序创建WAR。问题是在WAR内部,/ 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>

作为一个例子,我喜欢来自不同Spring模块的5个依赖项,但是我只看到一个包。

我所有的依赖项都有一个&#34;编译&#34;范围。

为什么会这样?

问候。

3 个答案:

答案 0 :(得分:1)

默认情况下,它不会在您的包中包装依赖库,您需要指示插件执行此操作

查看

答案 1 :(得分:0)

您可能也对maven-shade-plugin感兴趣 - 它会从您的所有依赖项中创建一个大罐。

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

答案 2 :(得分:0)

好的,我没有注意到缺少的依赖关系是&#34;包括&#34;在我的其他项目中,这些项目期望提供这些依赖项。

这就是为什么那些依赖关系在有效pom中显示为&#34;提供&#34;。

我将依赖项锁定在我的POM中以确保它们具有&#34;编译&#34;范围:

<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 

我感到愚蠢......

感谢您的帮助。