<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
我在项目的pom.xml中使用了依赖项导入。我的问题是我宣布2.5为版本。但是,编写较低版本是否重要?例如,我的意思是,如果我的项目使用3.0版本,我写的将提供2.5? (我的意思是让我们接受2.5很好,我的项目运行良好,如果我不改变其他任何东西,只需将2.5改为2.0会导致错误吗?)
答案 0 :(得分:24)
正确的解决方案是将容器中使用的确切servlet api版本声明为未成年人。
关键字提供:您指定的任何版本在编译时使用并进行测试。在运行时,它假定由运行时容器提供,例如码头。
如果实际运行时库与POM中的声明不同,则会引发麻烦。您是否会遇到问题是版本之间兼容性的问题。
Servlet API向后兼容,请参阅: Are the Java Servlet APIs backwards compatible?
答案 1 :(得分:6)
取决于。
一般来说,如果您期望一个确切的版本(即使提供),那么这就是您应该提供的。
但是,有些情况下您可能需要稍微修改一下版本。话虽如此 - 我会争辩2点:
1)您的项目可能期望较低版本并提供更高版本,这可能是正常的; 只要较高版本不是主要版本。我建议看看一个好的开源版本控制模型,比如Apache project。
2)让您的项目期望更高版本并获得更低版本可能 NOT 确定。主要原因是你不能指望可能不存在的东西。
我希望这会有所帮助。