Maven学习笔记(2)——pom、dependencyManagement、classifier属性、import scope、type pom

本文详细介绍了Maven的pom.xml解析,dependencyManagement用于统一管理多项目依赖版本,避免版本混乱。dependencyManagement不直接引入jar,子项目需额外声明。classifier属性用于指定特殊版本的依赖,如在JSON-lib的例子中。此外,还探讨了import scope与type pom的组合使用,解决多重继承问题,通过dependencyManagement配合import scope实现依赖的分类管理,使得pom文件更加清晰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. pom.xml
  2. dependencyManagement
  3. classifier
  4. import scope、type pom
1.pom.xml解析:
2.dependencyManagement:

Maven 使用dependencyManagement 元素为多项目依赖提供了一种管理依赖版本号的方式。父项目中声明依赖的版本,则子项目就不用版本,只需引用就可,子项目也会自动加载父项目声明的版本jar。

  • dependencyManagement 作为版本统一管理,避免多子项目引用的版本混乱。
  • dependencyManagement 只是声明依赖的jar,不会真正加载到本地库。子项目需要引用jar还需声明(只是可省略版本号)
  • 示例:
    父pom.xml中:
<dependencyManagement>  
    <dependencies>  
        <dependency>  
        <groupId>mysql</groupId>  
        <artifactId>mysql-connector-java</artifactId>  
        <version>5.1.2</version>  
        </dependency>  
        ...  
    <dependencies>  
</dependencyManagement>  

子项目pom.xml: (不需要声明版本号了)

<dependencies>  
    <dependency>  
    <groupId>mysql</groupId>  
    <artifactId>mysql-connector-java</artifactId>  
    </dependency>  
</dependencies> 

3.classifier属性作用:

比如 JSON-lib ,我利用 sonatype的 jar 搜素引擎搜索发现,JSON-lib的jar提供了两个版本的SDK,如图:
这里写图片描述

这个时候就必须使用classifier属性指定了:

<dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <classifier>jdk15</classifier> 
        </dependency>

如果不定义classifier的话就maven就会报错说找不到 jar 文件。

4.import scope、type pom:

继承一个父模块,然后再引入相应的依赖

假如说,我不想继承,或者我想继承多个,怎么做?

我们知道Maven的继承和Java的继承一样,是无法实现多重继承的,如果10个、20个甚至更多模块继承自同一个模块,那么按照我们之前的做法,这个父模块的dependencyManagement会包含大量的依赖。如果你想把这些依赖分类以更清晰的管理,那就不可能了,import scope依赖能解决这个问题。
但是,问题也出现了:

单继承:maven的继承跟java一样,单继承,也就是说子model中只能出现一个parent标签;

parent模块中,dependencyManagement中预定义太多的依赖,造成pom文件过长,而且很乱;

如何让这些依赖可以分类并清晰的管理?

问题解决:import scope依赖

如何使用:

1、maven2.9以上版本

2、将dependency分类,每一类建立单独的pom文件

3、在需要使用到这些依赖的子model中,使用dependencyManagement管理依赖,并import scope依赖

3、注意:scope=import只能用在dependencyManagement里面,且仅用于type=pom的dependency

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <!-- 重要:版本号要和父模块中预定义的spring boot版本号保持一致 -->
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

注意:import scope只能用在dependencyManagement里面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值