为什么包括bom不起作用?

时间:2017-04-09 09:59:19

标签: maven maven-bom

我发现某些东西不起作用,我期望它起作用。

我在org.glassfish.jersey:jersey-bom部分导入了dependencyManagement

<dependencyManagement>
   <dependencies>
     <dependency>
       <groupId>org.glassfish.jersey</groupId>
       <artifactId>jersey-bom</artifactId>
       <version>2.26-b03</version>
       <type>pom</type>
       <scope>include</scope>
     </dependency>
  </dependencies>
</dependencyManagement>

pom明确包括以下依赖。

<dependency>
  <groupId>org.glassfish.jersey.core</groupId>
  <artifactId>jersey-common</artifactId>
  <version>${project.version}</version>
</dependency>

现在我添加自己的依赖

<dependencies>
  <dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-common</artifactId>
    <scope>test</scope>
  </dependency>
</dependencies>

mvn抱怨。

  对于org.glassfish.jersey.core的

'dependencies.dependency.version':jersey-common:jar缺失。 @第33行,第17栏

我的pom有什么问题?

1 个答案:

答案 0 :(得分:0)

您是否将project-version定义为属性?我猜不是,因为您没有使用它来指定BOM的版本。

使用文字字符串,这应该有效:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey</groupId>
            <artifactId>jersey-bom</artifactId>
            <version>2.26-b03</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-common</artifactId>
            <version>2.26-b03</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-common</artifactId>
    </dependency>
</dependencies>

让我感到兴趣的是,您不需要在org.glassfish.jersey.core:jersey-common:2.26-b03中指定<dependencyManagement>,因为它是BOM的一部分,但如果不存在依赖关系则不起作用。