2017-04-09 109 views
0

我发现有些东西不能工作,我预计工作。为什么包括bom不起作用?

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

<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抱怨。

'dependencies.dependency.version'for org.glassfish.jersey.core:jersey-common:缺少jar。 @第33行,第17列

我的pom有什么问题?

+1

你应该使用'import'而不是'include'来代替' ...'.... – khmarbaise

+0

@khmarbaise这就是交配!谢谢! –

+0

https://issues.apache.org/jira/browse/MNG-6213 –

回答

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> 

什么我感兴趣的是,你不应该需要在<dependencyManagement>指定org.glassfish.jersey.core:jersey-common:2.26-b03,因为它是BOM的一部分,但将相关不起作用如果它不在那里。