0

Java 11、Maven 3.8.3

我在 pom 文件中的 Java Maven 项目:

  <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-framework-bom</artifactId>
      <version>4.3.8.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

我的课在这里:

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Module1
 */
public class App {
    private static Logger logger = LoggerFactory.getLogger(App.class);

    public static void main(String[] args) {
        logger.debug("Module1, JDK: " + System.getProperty("java.version"));

        // Use lib commons-lang3
        logger.debug("lib: commons-lang3: isEmptyString = " + StringUtils.isEmpty(""));
    }
}

但是在mvn install我得到错误之后:

[INFO] 正在扫描项目...
[ERROR] [ERROR] 处理 POM 时遇到一些问题:
[ERROR] org.apache.commons:commons-lang3:jar 的“dependencies.dependency.version”缺失。@ 第 15 行,第 17 列

如果我打开 BOM 文件,它存在:

<commons-dbcp2.version>2.7.0</commons-dbcp2.version>
<commons-lang3.version>3.9</commons-lang3.version>
<commons-pool.version>1.6</commons-pool.version>

commons-lang3.version为什么 Maven在 BOM 文件中找不到正确的版本号?

4

1 回答 1

0

我解决问题。在父母的 POM 中使用:

 <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-dependencies</artifactId>
          <version>2.4.4</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>

在模块的 POM 中使用(示例):

  <dependencies>
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

如您所见,没有明确设置库的版本号。版本号从 BOM 文件中隐含。

好的!

于 2021-04-14T19:57:41.377 回答