问题

今天依旧像往常一样,上号,打开idea,右键运行测试springMVC代码有没有效果,结果测试几次,依然都是这个界面,无动于衷,也没有任何报错,
在这里插入图片描述

这是tomcat插件的代码
 <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>80</port> //端口
                    <path>/</path>  //访问路径
                </configuration>
            </plugin>
        </plugins>

解决

刚才那个界面打印出了一个“Skipping no- war project ” 意思是跳过不是“war”包的工程。当时也没在意,就一直在想为啥运行不了啊。最后在网上搜了才知道,果然是这儿出了毛病,需要把打包形式换成“war”,因为默认是"jar"

项目的打包类型:pom、jar、war
指定打包类型使用标签,它默认是jar类型。

pom:父类型都为pom类型
pom

jar:内部调用或者是作服务使用
jar

war:打包项目,用于在容器(Tomcat、Jetty等)上部署
war

所以在pom.xml文件中加入“war”就行了。

maven pom.xml配置文件中的packaging标签

接下来又出现了一个问题“A child container failed during start”(子容器开始时启动失败)
在这里插入图片描述
我有上网搜了下,恍然大悟,原来是pom.xml文件中引入servlet坐标时,忘记加“ provided”

<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>  //记得加,否则会跟tomcat起冲突
            //因为web项目中一般使用Tomcat,而Tomcat自带的jar包中有servlet-api依赖。当我们运行Tomcat的时候,
            //肯定把Tomcat依赖的jar包都导入了,而<scope>provided</scope>的作用就是让servlet-api依赖只在编译
            //的时候起作用,运行的时候不起作用,避免和Tomcat自带的依赖产生冲突
        </dependency>

为什么要在web项目中的pom.xml文件中给servlet-api依赖添加provided

更多推荐