为什么我的Maven没有使用定义的BOM?

时间:2015-11-26 10:36:19

标签: java maven

我目前正在尝试将BOM(物料清单)文件引入我的Maven项目,但它似乎不起作用,我不知道为什么。

这是我的 bom

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.private</groupId>
  <artifactId>test.bom</artifactId>
  <version>5.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <properties>
    <version.CoreAnnotation>5.0.0-SNAPSHOT</version.CoreAnnotation>
    <version.CoreWeb>5.0.0-SNAPSHOT</version.CoreWeb>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.private</groupId>
        <artifactId>CoreAnnotation</artifactId>
        <version> ${version.CoreAnnotation}</version>
        <type>ejb</type>
      </dependency>
      <dependency>
        <groupId>com.private</groupId>
        <artifactId>CoreWeb</artifactId>
        <version>${version.CoreWeb}</version>
        <type>war</type>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>

更多,但我排除了它们,因为我认为这应该足以作为一个例子。

这是我的 pom (我尝试包含bom):

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>Core</artifactId>
    <groupId>com.private</groupId>
    <version>5.0.0-SNAPSHOT</version>
  </parent>
  <artifactId>Core-ear</artifactId>
  <packaging>ear</packaging>
  <name>Core-ear: EAR Module for private</name>

  <properties>
    <version.test.bom>5.0.0-SNAPSHOT</version.test.bom>
  </properties>


  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.private</groupId>
        <artifactId>test.bom</artifactId>
        <version>${version.test.bom}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>

每当我使用 maven install 时,应该会在依赖项部分中定义的所有包的集合出现在文件夹\ target \ Core-ear \

现在问题是:bom中定义的依赖关系不会出现在那里。可能是什么问题?

ps:运行mvn install -X进行调试似乎无济于事。

1 个答案:

答案 0 :(得分:2)

这是因为您没有在POM中声明依赖项。您只声明了<dependencyManagement>部分。

在您的POM中,您需要添加以下依赖项,而不是版本:

<dependencies>
  <dependency>
    <groupId>com.private</groupId>
    <artifactId>CoreAnnotation</artifactId>
    <type>ejb</type>
  </dependency>
  <dependency>
    <groupId>com.private</groupId>
    <artifactId>CoreWeb</artifactId>
    <type>war</type>
  </dependency>
</dependencies>

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.private</groupId>
      <artifactId>test.bom</artifactId>
      <version>${version.test.bom}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

请参阅Introduction to the Dependency Mechanism:BOM用于计算所有工件的版本,因此您无需在<dependency>部分添加它。