在Eclipse中构建Maven项目之后,为什么“ WEB-INF / lib”文件夹似乎为空?

ric*_*ard 3 java eclipse spring-mvc maven

我使用eclipse 跟随了这个spring-mvc-tutorial,但是在我调用Maven / Update Projects之后,我的WEB-INF / lib目录仍然为空。

这是我的项目浏览器的外观:

在此处输入图片说明

我也没有在我的Deployment Assembly设置中看到任何错误:

在此处输入图片说明

这是我使用的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">
<modelVersion>4.0.0</modelVersion>
<groupId>CrunchifySpringMVCTutorial</groupId>
<artifactId>CrunchifySpringMVCTutorial</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.2.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>4.2.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.2.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>4.2.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>4.2.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>
</dependencies> 
<build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <warSourceDirectory>WebContent</warSourceDirectory>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

我什至按照建议在新工作区之间切换 此链接的,但没有任何帮助

编辑:当我启动服务器时,我得到错误:java.lang.ClassNotFoundException:org.springframework.web.servlet.DispatcherServlet

MWi*_*ner 5

Eclipse实际上从显示WEB-INF/libMaven管理的Dynamic Web-Project项目中的文件夹的视图中隐藏文件。正如您的第一个屏幕截图所示,Eclipse已在后台将“ Maven Dependencies”库条目成功添加到了您的类路径中-它包含您的中引用的所有依赖项pom.xml

该行为背后的意图是/可能是:作为开发人员,您不应将任何.jar文件手动复制到 WEB-INF/lib,导致这种方式会欺骗(Maven)托管项目背后的想法。

从某种意义上说,这很有意义,因为Maven为您执行了任何依赖关系管理,从而解决并捆绑了任何第三方(或您自己)的工件。

如果您运行mvn带有目标的clean package(或什至:)clean install,它将.war在您项目的“目标”文件夹中为您生成一个文件。如果解压缩该.war文件,则应该找到一个WEB-INF/lib文件夹,其中包含捆绑到可部署工件中的所有依赖项。