最近在学习尚学堂的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中会出现这样的错误
解决1
可以通过报错提示得知是插件的版本号未知,但是很多博客没有配置tomcat7-maven-plugin的版本却没有报错。我们访问tomcat7插件官网:http://tomcat.apache.org/maven-plugin.html,阅读说明得知现在的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
问题得到解决
情形2
在上述配置解决后,发现maven指令tomcat7:run无法启动hello_maven项目,但是将项目打包成war包部署到tomcat上则可以启动项目并正常访问,具体情况如下:
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
问题得到解决