基于maven构建的项目是否会在tomcat版本之间产生运行时冲突?

时间:2012-02-17 13:55:21

标签: maven maven-2 maven-plugin

我只想知道如果我使用maven作为构建工具开发spring mvc项目,并且在创建war文件后部署该应用程序时,是否会因tomcat而产生冲突?

更具体地说,让我举一个例子:
在开发过程中,我想我有tomcat版本6.0.xx,在生产服务器上,我想我的tomcat版本是6.x.x. 这会产生冲突吗?

希望你有我的问题..

1 个答案:

答案 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 6使用servlet-api 2.5(没有名为getHeaders()的方法)
  • Jetty 8使用servlet-api 3.0(有一个名为getHeaders()的方法)

我的模块使用Jetty 8(因此是servlet-api 3.0),并从HttpServletRequest对象调用getHeaders()。当我在当地跑,一切都很好。但是当部署并调用getHeaders()时,会触发NoSuchMethod异常。请注意,然后我更改了我的本地设置以更紧密地匹配环境,并且能够重现问题。

希望有意义并有所帮助