【问题标题】:Dependency not resolved from BOM file未从 BOM 文件解析依赖关系
【发布时间】:2020-07-13 17:48:36
【问题描述】:

尝试使用 BOM 文件解决依赖关系,但以下配置不起作用。

=== 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>demo</groupId>
    <artifactId>bom-dependency</artifactId>
    <version>0.0.1</version>
    <packaging>pom</packaging>
    <name>bom-dependency</name>
    <description>BOM dependency</description>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc8</artifactId>
                <version>12.2.0.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

=== POM 文件配置 ===

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.0.RELEASE</version>
        <relativePath />
    </parent>
    <groupId>com.demo</groupId>
    <artifactId>Test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Test</name>
    <description>Demo Project</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>demo</groupId>
                <artifactId>bom-dependency</artifactId>
                <version>0.0.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc8</artifactId>
            <version>12.2.0.1</version>
        </dependency>
        

</project>

谁能告诉我为什么它不依赖 BOM 文件?

【问题讨论】:

    标签: java maven


    【解决方案1】:

    删除

                    <type>pom</type>
                    <scope>import</scope>
    

    从 BOM 中的定义中删除测试项目中依赖项的版本号。

    【讨论】:

    • 在构建项目时,删除 com.oracle:ojdbc8:jar 的版本标签“dependencies.dependency.version”后出现此问题:缺少
    • 版本应该来自您的 BOM,如果您输入正确的话。
    • 现在一切正常。谢谢你。还有一点,我们如何从 BOM 文件中获取父依赖版本?例如 org.springframework.bootspring-boot-starter-parent2.3.0.RELEASE 在 pom 文件中可用。我需要从 BOM 文件中获取该版本。如何获得?
    • 还有其他方法吗?
    • 您可以将父版本设置为${revision} 并在命令行中提供版本。
    【解决方案2】:

    spring-boot-starter-parent中有之前的定义:

          <dependency>                                                              
            <groupId>com.oracle.ojdbc</groupId>                                     
            <artifactId>ojdbc8</artifactId>                                         
            <version>${ojdbc.version}</version>                                     
          </dependency>
    

    您可以通过设置属性覆盖 Spring Boot 的版本:

        <oracle-database.version>12.2.0.1</oracle-database.version>
    

    但这将覆盖所有 Oracle 工件。如果您要保留 Spring Boot 父级,您所能做的就是创建一个显式依赖项。

    【讨论】:

      猜你喜欢
      • 2019-10-04
      • 2019-05-19
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 2016-07-16
      • 2020-07-07
      相关资源
      最近更新 更多