在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