Maven中Tomcat插件的使用

4 篇文章 0 订阅

以前常在Maven中用Jetty插件。由于系统的正式部署环境为Tomcat,因此把设置了Tomcat插入,可在使用过程中一直出错;现将设置过程中的错误整理了一个为广大初学者一些提示。以免在这些上面浪费时间。

系统原配置为Jetty插件。配置信息如下:


<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>jetty-maven-plugin</artifactId>
				<version>8.1.16.v20140903</version>
				<configuration>
					<scanIntervalSeconds>3</scanIntervalSeconds>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.12.4</version>
				<configuration>
					<skipTests>true</skipTests>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.3</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
				</configuration>
			</plugin>
由于真实的部署环境为Tomcat,因此需要将Jetty插件改为Tomcat插件。使开发环境更接近于真实环境。因此新的配置如:

    	<plugin>
    		<groupId>org.codehaus.mojo</groupId>
    		<artifactId>tomcat-maven-plugin</artifactId>
    		<version>1.1</version>
    		<configuration>
    			<path>/</path>
    			<port>8080</port>
    			<uriEncoding>UTF-8</uriEncoding>
  				<server>tomcat7</server>
    		</configuration>
    	</plugin>
但是设置为Tomcat插件后。问题不断。错误如下:

java.lang.ClassCastException: org.springframework.web.filter.DelegatingFilterProxy cannot be cast to javax.servlet.Filter
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
	at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
	at org.apache.catalina.startup.Embedded.start(Embedded.java:825)
从网上查找原因,说是servlet-api.jar包引起的冲突。因此Tomcat6及以上版本中自带servlet-api,因此两个不同jar之间引发此冲突。因此将原有代码

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
		</dependency>
改为
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
熟悉MAVEN的朋友应该都知道( <scope>provided</scope>)的含义,这里不做介绍。

然后通过(tomcat:run)命令启动Tomcat,可是上面的错误依旧存在。

因此我打开(POX.XML)选择(Dependency Hierarchy)选择,查看系统有哪些依赖。发现在(Resolved Dependencies)选择卡中存在(javax.servlet-api)。因此需要将这个jar的依赖给删除。而这个jar是通过其他jar自动依赖的,因此需要加入下面的代码

  	<dependency>
  		<groupId>net.mingsoft</groupId>
  		<artifactId>shiro-freemarker-tags</artifactId>
  		<version>${shiro-freemarker-tags-version}</version>
  		<exclusions>
  			<exclusion>
  				<artifactId>javax.servlet-api</artifactId>
  				<groupId>javax.servlet</groupId>
  			</exclusion>
  		</exclusions>
  	</dependency>

因外也可以在javax.servlet-api这个选项中右击,选择( Exclude Maven Artifact...)会弹出一个对话框,选择不想依赖的jar单击确定即可。


重新运行tomca:run之后系统正常。







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值