maven提供的范围和版本

dgiusagp  于 2023-10-17  发布在  Maven
关注(0)|答案(2)|浏览(129)
<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,它会导致一个错误吗?)

bis0qfac

bis0qfac1#

正确的解决方案是向minor声明容器中使用的servlet API的确切版本。
关键字为provided:你指定的任何版本都将在编译时使用,并用于测试。在运行时,它被假定由运行时容器提供,例如。Jetty
如果实际的运行时库与POM中的声明不同,那么您就在自找麻烦。您是否会遇到问题是版本之间的兼容性问题。
Servlet API是向后兼容的,请参阅:Are the Java Servlet APIs backwards compatible?

ubby3x7f

ubby3x7f2#

看情况
一般来说,如果你期待一个确切的版本(即使提供),那么这就是你应该提供的。
但是,在某些情况下,您可能需要对版本进行一些微调。话虽如此,我想提出两点:
1)让您的项目期望一个较低的版本并提供一个较高的版本可能是可以的;只要不是主要版本。我建议看看一个好的开源版本控制模型,比如Apache project
2)让你的项目期待一个更高的版本而得到一个更低的版本可能是不好的。最主要的原因是你不能期望那些可能不存在的东西。
我希望这能帮上忙。

相关问题