Maven复习

1,为什么使用Maven

    1,依赖的jar包只在本地仓库保存一份,使用时输入‘坐标’即可,节省空间解决多个模块中重复导入。

    2,导入一个jar,此jar包需要依赖其他jar包,maven能自动帮助导入。

    3,解决jar直接的冲突, 依据:最短路径者优先和优先声明者优先。

    4,在中央仓库下载规范的依赖。

2,依赖的范围

    1,在<scope>标签内定义,  范围包括:

    ①compile, main目录下,test目录下部署到服务器上都依赖都起作用。默认。

    ②test  只要test目录下的java代码可以访问此依赖。

            ③provided   main,test下面可以访问此依赖。但是不会部署到服务器上。

    ④runtime[了解]  test目录下可以访问,也会部署到服务器上。

3, 依赖的传递性

    1,只有compile依赖的范围下,依赖具有传递性。

4,依赖的排除

    1,使用< exclusions>< exclusion> XXX< exclusion>< exclusions>可以在依赖某个工程时,不依赖此工程下的某个依赖。

5, 统一管理目标jar包的版本

    1,<properties>

                   <spring.version>4.1.1.RELEASE</spring.version>

            </properties>

 

6,在Maven多模块的时候,管理依赖关系是非常重要的,各种依赖包冲突,查询问题起来非常复杂,于是就用到了<dependencyManagement>

示例说明,

在父模块中:

    <dependency>

                <groupId>commons-io</groupId>

                <artifactId>commons-io</artifactId>

                <version>${commons-io.version}</version>

     </dependency>

那么在子模块中只需要<groupId>和<artifactId>即可,如: 

    <dependency>

                <groupId>commons-io</groupId>

                <artifactId>commons-io</artifactId>

     </dependency>

 

说明:

使用dependencyManagement可以统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,不用每个模块项目都弄一个版本号,不利于管理,当需要变更版本号的时候只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另外一个特殊的版本号时,只需要在自己的模块dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承于父类版本号。

与dependencies区别:

1)Dependencies相对于dependencyManagement,所有声明在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。

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

    

    如果在父工程的<dependencyManagement>标签内写了某个依赖,但是没有明确定义此依赖的版本号,在子模块中导入此依赖时,maven会从<dependencyManagement>中找依赖版本号,此时找不到,会报错。所以在<dependencyManagement>书写的依赖必须有版本号,如果没版本号,就不要写,以免报错。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值