maven 我应该在pom.xml中指明依赖版本吗?[副本]

wqnecbli  于 2023-10-17  发布在  Maven
关注(0)|答案(3)|浏览(148)

此问题已在此处有答案

maven dependency without version(5个答案)
24天前关闭
大多数来自互联网的Java示例都没有在标签中指明依赖项的版本。我应该在生产pom.xml文件中指明依赖版本吗?
如果我没有指明版本号,那么我的项目的依赖版本号在GIT repo中存储在哪里?

y53ybaqx

y53ybaqx1#

我补充第三个答案,因为我认为其他两个错过了你的问题的真正含义。让我们知道什么是适合您的需求。
在Maven中,指定每个依赖项的版本号是强制性的。如果你看到一个像这样的块:

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
    </dependency>

如果没有显式的<version>标记,这意味着版本在<dependencyManagement>块中 * 别处 * 指定。通常,该块位于Maven项目的根pom中,或者位于根pom的外部父节点中。spring-boot-starter-parent是提供<dependencyManagement>块的外部父节点的一个众所周知的例子。
另请参阅有关dependencyManagement的Maven文档。

x4shl7ld

x4shl7ld2#

这是一个基于观点的问题,但这里的观点:
如果你没有指定一个版本,那么在你的版本控制仓库中就没有你得到的版本的实际记录。我相信你会得到最新的版本,每次它被解决。对于生产应用程序,恕我直言,这根本是不可接受的。
您可以只指定一个主要版本,或主要/次要或主要/次要/补丁。
从理论上讲,指定主要版本和次要版本是安全的,以确保您获得的版本与您的代码兼容。
但是,如果你真的想确保你的代码和库是完全兼容的,那么你也应该指定补丁版本。
我倾向于在初始开发期间只使用主版本号,然后在验证所有测试仍然通过之后锁定补丁版本以进行初始生产部署。
然后,如果您在完全测试之后再次了解到要使用的安全更新或新功能,则可以升级各个库版本。

kt06eoxx

kt06eoxx3#

指示版本->使用特定版本。.不表示版本->将尝试获取最新可用版本。
这可能很容易让人想到(总是最新的不是最好的吗?),但随着时间的推移,它可能会出现奇怪的错误。想象一下,两年没有进入一个项目,现在一切都是一团糟,你不知道是哪个部分造成了混乱。

相关问题