我只想知道如果我使用maven作为构建工具开发spring mvc项目,并且在创建war文件后部署该应用程序时,是否会因tomcat而产生冲突?
更具体地说,让我举一个例子:
在开发过程中,我想我有tomcat版本6.0.xx,在生产服务器上,我想我的tomcat版本是6.x.x.
这会产生冲突吗?
希望你有我的问题..
答案 0 :(得分:1)
它可能。
通常情况下,如果您依赖于Tomcat及其在运行时环境中的版本,则需要使“提供”的依赖关系范围如下所示,这实际上意味着maven不会将其与您的应用程序打包在一起:
<dependency>
<groupId>com.abc.xyz</groupId>
<artifactId>runtimepackage</artifactId>
<version>1.2.3</version>
<scope>provided</scope>
</dependency>
我最近遇到了不同版本的jetty这个问题。一个作为提供范围的软件包使用Jetty 6,而部署到该运行时环境的另一个软件包使用Jetty 8。
我的模块使用Jetty 8(因此是servlet-api 3.0),并从HttpServletRequest对象调用getHeaders()。当我在当地跑,一切都很好。但是当部署并调用getHeaders()时,会触发NoSuchMethod异常。请注意,然后我更改了我的本地设置以更紧密地匹配环境,并且能够重现问题。
希望有意义并有所帮助