在jersey项目中包含jersey-bom导入范围依赖的目的是什么?

使用the jersey-quickstart-grizzly2工件生成基于jersey的项目时

 mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 \ -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \ -DgroupId=com.example -DartifactId=simple-service -Dpackage=com.example \ -DarchetypeVersion=2.7 

pom生成了一个可以删除jersey-bom依赖项:

    org.glassfish.jersey jersey-bom ${jersey.version} pom import    

这种依赖:

  org.glassfish.jersey.containers jersey-container-grizzly2-http  

这就是maven依赖图的样子:

在此处输入图像描述

在项目中包含jersey-bom依赖项的目的是什么?

你不应该从dependencyManagement删除jersey-bom

BOM(物料清单)包相关的依赖关系,以便它们的版本一起工作。 您可以在此页面上的maven文档中阅读有关它的更多信息。

因为它存在于dependencyManagement (不在dependencies ),所以实际上并没有向项目添加依赖项,它只是集中了版本管理。 如果您不熟悉这种差异,请阅读本SO答案中的更多内容 。

基本上,BOM允许您根据需要添加尽可能多的jersey依赖关系,而不必担心混合不良版本:

   org.glassfish.jersey.containers jersey-container-grizzly2-http    org.glassfish.jersey.media jersey-media-json-jackson