Maven——关于idea 2018.1版本集成tomcat7插件的问题解决

最近在学习尚学堂的idea使用教程中在maven的web工程创建阶段出现了一些问题,具体为两个情形,情形如下:

 

情形1

运用maven集成的tomcat插件,我们不需要将项目部署到tomcat中,直接通过maven的tomcat指令即可对项目进行部署和运行,大部分的tomcat7插件的部署步骤为在pom.xml文件中添加如下标签:

<build>
        <plugins>
            <!--配置tomcat插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <!--配置项目的路径和tomcat的端口,以及服务器编码解决乱码问题-->
                <configuration>
                    <path>/</path>
                    <port>9090</port>
                    <uriEncoding>UTF-8</uriEncoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

但是添加后在idea的maven projects中会出现这样的错误

Maven——关于idea 2018.1版本集成tomcat7插件的问题解决

解决1

可以通过报错提示得知是插件的版本号未知,但是很多博客没有配置tomcat7-maven-plugin的版本却没有报错。我们访问tomcat7插件官网:http://tomcat.apache.org/maven-plugin.html,阅读说明得知现在的tomcat7插件有多个版本:

Maven——关于idea 2018.1版本集成tomcat7插件的问题解决

因为在学习尚学堂的idea课程教程中,老师使用的idea版本是2017年版本,所以没有标注tomcat7插件的version标签也不会报错,推测这个问题的出现是idea软件的版本问题。

我们在pom.xml文件中添加version标签,选择上述版本中的一个版本(这里选择2.2版本),就没有问题了

<build>
        <plugins>
            <!--配置tomcat插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <!--添加version字段,告诉idea插件的版本号,防止idea找不到对应插件报错-->
                <version>2.2</version>
                <configuration>
                    <path>/</path>
                    <port>9090</port>
                    <uriEncoding>UTF-8</uriEncoding>
                </configuration>
            </plugin>
        </plugins>
</build>

结果1

问题得到解决

Maven——关于idea 2018.1版本集成tomcat7插件的问题解决

情形2

在上述配置解决后,发现maven指令tomcat7:run无法启动hello_maven项目,但是将项目打包成war包部署到tomcat上则可以启动项目并正常访问,具体情况如下:

Maven——关于idea 2018.1版本集成tomcat7插件的问题解决

tomcat7:run命令运行的信息提示跳过没有war包的工程,所以问题是项目在经过tomcat7:run命令启动前没有被打包成war包,而将项目部署到tomcat上时,项目是被打包成war包的。

解决2

由于我们的项目通过tomcat7:run命令启动时,项目是没有被打包成war包。所以要在pom.xml中的tomcat插件配置的configuration中添加ignorePackaging标签,并标注为true,告诉tomcat忽略war包检查即可。

    <build>
        <plugins>
            <!--配置tomcat插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <!--添加version字段,告诉idea插件的版本号,防止idea找不到对应插件报错-->
                <version>2.2</version>
                <configuration>
                    <path>/</path>
                    <port>9090</port>
                    <uriEncoding>UTF-8</uriEncoding>
                    <!--添加忽略war包检查标签,则可以让tomcat7:run指令正常启动tomcat-->
                    <ignorePackaging>true</ignorePackaging>
                </configuration>
            </plugin>
        </plugins>
    </build>

结果2

问题得到解决

Maven——关于idea 2018.1版本集成tomcat7插件的问题解决