rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » Java综合

Maven问题小汇

Maven常用命令

mvn eclipse:eclipse:对于checkout下的项目,一开始并不是eclipse可以导入的项目,只有一个src文件夹和一个pom.xml配置文件;为了可以让eclipse导入该项目,命令行窗口中,在项目路径下输入mvn eclipse:eclipse命令可以将项目制成eclipse项目;

mvn eclipse:eclipse CU:有时候,在制成eclipse项目时可能会出错,原因可能是由于maven没有及时更新的缘故,所以在上面的命令中加入一句-U,让maven库自动更新,作用同样是生成eclipse项目;

mvn eclipse:clean eclipse:eclipse CU:作用同mvn eclipse:eclipse CU,只是做得更彻底;

mvn package:将项目打成可web应用包;在项目做成后,通过这条命令可以将项目打成war包,执行结果是在当前项目文件夹下生成一个target文件夹,target文件夹中即有项目war包。

========================

在maven2中使用tomcat plugin的时,报cannot be cast to javax.servlet.Filter的问题

在maven2中使用tomcat plugin启动web应用,在pom.xml中加入以下配置信息:

  • <project>  
  • ...   
  • <build>  
  • <!-- To define the plugin version in your parent POM -->  
  • <pluginManagement>  
  • <plugins>  
  • <plugin>  
  • <groupId>org.codehaus.mojo</groupId>  
  • <artifactId>tomcat-maven-plugin</artifactId>  
  • <version>1.0-beta-1</version>  
  • </plugin>  
  • ...   
  • </plugins>  
  • </pluginManagement>  
  • <!-- To use the plugin goals in your POM or parent POM -->  
  • <plugins>  
  • <plugin>  
  • <groupId>org.codehaus.mojo</groupId>  
  • <artifactId>tomcat-maven-plugin</artifactId>  
  • <version>1.0-beta-1</version>  
  • </plugin>  
  • ...   
  • </plugins>  
  • </build>  
  • ...   
  • </project>  
  • 运行mvn tomcat:run后,tomcat报错误如下:

  • java.lang.ClassCastException: common.filter.CacheFilter cannot be cast to javax.servlet.Servlet   
  •  【分析原因】
    由于CacheFilter实现了javax.servlet.Filter接口,Filter是在servlet-api.jar里,因此pom中有

  • <dependency>  
  •     <groupId>javax.servlet</groupId>  
  •     <artifactId>servlet-api</artifactId>  
  •     <version>2.4</version>  
  • </dependency>  
  • 但是tomcat里已经有servlet-api的包,而且版本可能会有不同,所以就会出现ClassCastException的问题

    【解决办法】
    servlet-api加入<scope>provided</scope>,如下:

  • <dependency>  
  •             <groupId>javax.servlet</groupId>  
  •             <artifactId>servlet-api</artifactId>  
  •             <version>2.4</version>  
  •             <scope>provided</scope>  
  • </dependency>  
  • 这样修改后,servlet-api.jar就不会在运行tomcat时被import进去了,不会与tomcat自带的servlet-api有冲突

    【避免此类问题的建议】
    注意pom.xml中关于包的scope的定义,解决此类包冲突产生的问题

    顶一下
    (0)
    踩一下
    (0)