Какова цель включения зависимости импорта jersey-bom с областью действия в проект jersey?

При создании проекта на основе jersey с использованием the jersey-quickstart-grizzly2 артефакта

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 зависимость, которую можно удалить:

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.glassfish.jersey</groupId>
                <artifactId>jersey-bom</artifactId>
                <version>${jersey.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

И эта зависимость:

<dependency>
      <groupId>org.glassfish.jersey.containers</groupId>
      <artifactId>jersey-container-grizzly2-http</artifactId>
</dependency>

так выглядит график зависимостей maven:

введите описание изображения здесь

Какова цель включения jersey-bom зависимости в проект?


person Salah Eddine Taouririt    schedule 04.04.2014    source источник


Ответы (1)


Вы не должны удалять jersey-bom из dependencyManagement.

Спецификация (спецификация) объединяет связанные зависимости, так что их версии будут работать вместе. Вы можете узнать больше об этом в документации maven на этой странице .

Поскольку он находится в dependencyManagement (а не в dependencies), он фактически не добавляет зависимости в ваш проект, а просто централизует управление версиями. Если вы не знакомы с разницей, прочтите этот ответ SO.

По сути, спецификация позволяет вам добавлять столько зависимостей трикотажа, сколько вам нужно, не беспокоясь о смешивании плохих версий:

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-grizzly2-http</artifactId>
        <!-- NO VERSION NEEDED BECAUSE OF THE BOM -->
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <!-- NO VERSION NEEDED BECAUSE OF THE BOM -->
    </dependency>
</dependencies>
person Alden    schedule 06.04.2014