最近在學習尚學堂的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
問題得到解決