目录
既然maven可以对项目进行打包,安装到本地maven仓库,也可以部署到远程仓库,那也就一样可以相互引用,有了引用关系,引用多了,那么引用和引用之间,有了相关性。
A依赖于B,B依赖于C,那么A也依赖于C
一、继承和聚合
这不就是中学的传递性吗?这是同级间的,如果是继承的关系呢?父亲引用了依赖,儿子是不是也就有了? 没错。
这些就是依赖的特性。
单如果父类需要使用子类的所有程序,不能一个一个打包,可以把你累个半死,不累也烦“si”你,这个时候用聚合工程就可以了,就像这样,儿子会在父亲的pom文件中,父亲也会再儿子的pom文件中,父亲引入的依赖儿子都会有,在对父亲进行打包部署的时候,儿子也都可以打包部署。
PS:有没有对继承和聚合有点迷糊?
maven中的继承和聚合的关系:两者的目的是不一样的,聚合的目的是能够快速的构建项目,继承的目的是减少重复配置。聚合:定义一个聚合模块,然后在pom文件中添加<module></module>标签,其中的内容是模块相对于当前模块的路径。那么在构建聚合模块的时候,在<module>中定义的模块也会跟着构建,不用逐个构建,因此加快了构建速度。继承:除了定义一个父模块,在父模块的pom文件中添加<module>标签,还要在子模块pom文件中添加<parent>标签,指向父模块。指向之后,那么在父模块中定义的插件和依赖都可以被子模块继承,就不用再子模块pom文件中重复配置了(减少了重复配置)。注:无论是聚合还是继承,父模块的pom文件中的<packageing>的内容都是pom,(这是乌龟的屁股,规定)。如果不写的话,默认的都是 jar。
二、依赖的范围
程序编程好后到构建成功这个过程全部由maven包管,在maven的不同生命周期阶段,对依赖的需要也就有不同,也就有了依赖的运行范围。
三、依赖的配置
除了依赖的运行范围,还有依赖中的有些依赖我不全用,可不可以去掉不需要的?
答案是当然可以,配置一下就可以。
咋配置,看图:pom文件中对引入依赖的属性的配置
等一下,说到了pom文件的依赖,没有想起在父类的依赖中总有一个标签<dependencyManagement>
啰嗦一下:
<dependencyManagement>的作用在父模块定义了很多依赖,但是某一个模块并没有全部用到,那么子模块还是会全部继承过来。比较浪费。所以可以使用依赖管理标签<dependencyManagement>在父模块的pom文件中的<dependencyManagement></dependencyManagement>定义了所有需要依赖的jar包,但是这样子模块并不会引入这些jar包。子模块中需要哪些jar包就在自身pom文件的<dependency>标签中引入就可以了,因为父模块的pom文件中已经定义过了,子模块的pom文件只需定义出<groupId>和<artifactId>就可以了。
如果表示没太明白:在看一下,
如果还觉得没有抓手:
好了好了,终于啰嗦完了