pom.xml 配置文件标签:dependencies 和 dependencyManagement 区别

本文介绍了Maven中dependencyManagement和dependencies的区别与用法。通过示例详细解释了如何利用dependencyManagement来集中管理版本号,简化多模块项目中依赖版本的维护工作。

dependencyManagement 依赖管理

通常会在一个项目的最顶层的父pom中使用dependencyManagement,
使用pom.xml中的dependencyManagement元素能让所有子项目在引用一个依赖时不用列出版本号。这样子项目中该依赖的版本号将使用父项目pom文件中该依赖的版本。

子项目某依赖没有指定版本号时,maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用这个dependencyManagement元素中指定的版本。

这样的好处就是: 如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号,这样当想升级或者切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目的修改;另外如果某个子项目需要另一个版本,只需要自己pom中声明版本号即可。

注意:

  • dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖
  • 如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom。
  • 如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

dependencies 依赖关系

自动引入声明在dependencies里的所有依赖,并默认被所有的子项目继承。如果项目中不写依赖项,则会从父项目
继承(属性全部继承)声明在父项目dependencies里的依赖项。

1. 单一模块情况
<!--只是对版本号进行管理,不会实际引入jar-->
<dependencyManagement>  
      <dependencies>  
            <dependency>
            		<!--jar包身份限定-->
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>  
                <!--版本号的声明-->
                <version>3.2.7</version>
            </dependency>  
    </dependencies>  
</dependencyManagement>  
  
<!--会实际下载声明的依赖jar包-->
<dependencies>  
       <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-core</artifactId>
                <!--不声明version 标签,则会继承dependencyManagement-->
       </dependency>  
</dependencies>
2. 多模块情况

父模块 pom.xml

<!--parent-module父模块pom.xml-->
<properties>
    <!--统一管理jar包版本。集中在父模块properties标签中定义所有依赖的版本号。-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <org.eclipse.persistence.jpa.version>1.2.6</org.eclipse.persistence.jpa.version>
    <javaee-api.version>1.8</javaee-api.version>
</properties>
 
<dependencyManagement>  
    <!--定义公共依赖的版本号-->
    <dependencies> 
        <dependency>  
            <groupId>org.eclipse.persistence</groupId>  
            <artifactId>org.eclipse.persistence.jpa</artifactId>  
            <version>${org.eclipse.persistence.jpa.version}</version>  
            <scope>provided</scope>  
        </dependency>  
          
        <dependency>  
            <groupId>javax</groupId>  
            <artifactId>javaee-api</artifactId>  
            <version>${javaee-api.version}</version>  
        </dependency>  
    </dependencies>  
</dependencyManagement> 

子模块 pom.xml

<!--son-module子模块pom.xml-->
<!--继承父类-->  
<parent>
    <!--声明父类的身份信息-->
    <artifactId>parent-module</artifactId>
    <groupId>com.ppd</groupId>  
    <version>0.0.1-SNAPSHOT</version> 
    <!--声明父类的pom文件路径-->
    <relativePath>../parent-module/pom.xml</relativePath>
</parent>  
 
<modelVersion>4.0.0</modelVersion>  
<artifactId>son-module</artifactId>  
<packaging>ejb</packaging>  
  
<!--依赖关系-->  
<dependencies>  
    <dependency>  
        <groupId>javax</groupId>  
        <artifactId>javaee-api</artifactId>
        <!--未声明则继承父类version、scope-->
    </dependency>  
      
    <dependency>  
        <groupId>com.fasterxml.jackson.core</groupId>  
        <artifactId>jackson-annotations</artifactId>
        <!--声明则不继承父类version-->
        <version>1.8<version/>
        <!--继承父类scope-->
    </dependency>  
      
    <dependency>  
        <groupId>org.eclipse.persistence</groupId>  
        <artifactId>org.eclipse.persistence.jpa</artifactId>
        <!--未声明则继承父类version-->
        <scope>provided</scope>
    </dependency>  
</dependencies> 
dolphin 源码 "C:\Program Files\Java\jdk1.8.0_161\bin\java.exe" -Dmaven.multiModuleProjectDirectory=D:\workCode\apache-dolphinscheduler-3.2.2-src -Djansi.passthrough=true -Dmaven.home=D:/workSofts/apache-maven-3.6.0 -Dclassworlds.conf=D:\workSofts\apache-maven-3.6.0\bin\m2.conf "-Dmaven.ext.class.path=D:\workSofts\JetBrains\IntelliJ IDEA 2025.1.1.1\plugins\maven\lib\maven-event-listener.jar" "-javaagent:D:\workSofts\JetBrains\IntelliJ IDEA 2025.1.1.1\lib\idea_rt.jar=62405" -Dfile.encoding=UTF-8 -classpath D:\workSofts\apache-maven-3.6.0\boot\plexus-classworlds-2.5.2.jar org.codehaus.classworlds.Launcher -Didea.version=2025.1.1.1 -s D:\workSofts\apache-maven-3.6.0\conf\settings.xml -Dmaven.repo.local=F:\ideamaven\MavenRepository clean [INFO] Scanning for projects... [ERROR] [ERROR] Some problems were encountered while processing the POMs: [ERROR] Non-resolvable import POM: Failure to find org.apache.dolphinscheduler:dolphinscheduler-bom:pom:3.2.2 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 30, column 25 [ERROR] 'dependencies.dependency.version' for org.codehaus.janino:janino:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 106, column 21 [ERROR] 'dependencies.dependency.version' for com.amazonaws:aws-java-sdk-s3:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 110, column 21 [ERROR] 'dependencies.dependency.version' for org.springframework.boot:spring-boot-starter-web:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 115, column 21 [ERROR] 'dependencies.dependency.version' for org.springframework.boot:spring-boot-starter-jetty:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 131, column 21 [ERROR] 'dependencies.dependency.version' for org.springframework.boot:spring-boot-starter-aop:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 146, column 21 [ERROR] 'dependencies.dependency.version' for org.springframework:spring-context:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 157, column 21 [ERROR] 'dependencies.dependency.version' for org.hibernate.validator:hibernate-validator:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 162, column 21 [ERROR] 'dependencies.dependency.version' for io.fabric8:kubernetes-client:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 167, column 21 [ERROR] 'dependencies.dependency.version' for org.springframework.boot:spring-boot-starter-test:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 173, column 21 [ERROR] 'dependencies.dependency.version' for org.apache.curator:curator-test:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 179, column 21 [ERROR] 'dependencies.dependency.version' for net.sf.py4j:py4j:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 192, column 21 [ERROR] 'dependencies.dependency.version' for org.springframework.ldap:spring-ldap-core:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 197, column 21 [ERROR] 'dependencies.dependency.version' for org.springframework.cloud:spring-cloud-starter-kubernetes-client-config:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 202, column 21 [ERROR] 'dependencies.dependency.version' for org.apache.hbase.thirdparty:hbase-noop-htrace:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 207, column 21 [ERROR] 'dependencies.dependency.version' for com.h2database:h2:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 212, column 21 [ERROR] 'dependencies.dependency.version' for org.casbin:casdoor-spring-boot-starter:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 218, column 21 [ERROR] 'dependencies.dependency.version' for org.springdoc:springdoc-openapi-ui:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 223, column 21 @ [ERROR] The build could not read 1 project -> [Help 1] [ERROR] [ERROR] The project org.apache.dolphinscheduler:dolphinscheduler-api:3.2.2 (D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml) has 18 errors [ERROR] Non-resolvable import POM: Failure to find org.apache.dolphinscheduler:dolphinscheduler-bom:pom:3.2.2 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 30, column 25 -> [Help 2] [ERROR] 'dependencies.dependency.version' for org.codehaus.janino:janino:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 106, column 21 [ERROR] 'dependencies.dependency.version' for com.amazonaws:aws-java-sdk-s3:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 110, column 21 [ERROR] 'dependencies.dependency.version' for org.springframework.boot:spring-boot-starter-web:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 115, column 21 [ERROR] 'dependencies.dependency.version' for org.springframework.boot:spring-boot-starter-jetty:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 131, column 21 [ERROR] 'dependencies.dependency.version' for org.springframework.boot:spring-boot-starter-aop:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 146, column 21 [ERROR] 'dependencies.dependency.version' for org.springframework:spring-context:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 157, column 21 [ERROR] 'dependencies.dependency.version' for org.hibernate.validator:hibernate-validator:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 162, column 21 [ERROR] 'dependencies.dependency.version' for io.fabric8:kubernetes-client:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 167, column 21 [ERROR] 'dependencies.dependency.version' for org.springframework.boot:spring-boot-starter-test:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 173, column 21 [ERROR] 'dependencies.dependency.version' for org.apache.curator:curator-test:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 179, column 21 [ERROR] 'dependencies.dependency.version' for net.sf.py4j:py4j:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 192, column 21 [ERROR] 'dependencies.dependency.version' for org.springframework.ldap:spring-ldap-core:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 197, column 21 [ERROR] 'dependencies.dependency.version' for org.springframework.cloud:spring-cloud-starter-kubernetes-client-config:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 202, column 21 [ERROR] 'dependencies.dependency.version' for org.apache.hbase.thirdparty:hbase-noop-htrace:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 207, column 21 [ERROR] 'dependencies.dependency.version' for com.h2database:h2:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 212, column 21 [ERROR] 'dependencies.dependency.version' for org.casbin:casdoor-spring-boot-starter:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 218, column 21 [ERROR] 'dependencies.dependency.version' for org.springdoc:springdoc-openapi-ui:jar is missing. @ org.apache.dolphinscheduler:dolphinscheduler-api:[unknown-version], D:\workCode\apache-dolphinscheduler-3.2.2-src\dolphinscheduler-api\pom.xml, line 223, column 21 [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException [ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException 进程已结束,退出代码为 1
06-28
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Whitemeen太白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值