Maven高级
分模块设计与开发
- 什么是分模块设计:将项目按照功能拆分成若干个子模块
- 为什么要分模块设计:方便项目的管理维护、扩展,也方便模块间的相互调用,资源共享
- 注意事项:分模块设计需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分
继承与聚合
继承
概念:继承描述的是两个工程之间的关系,与Java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
作用:简化依赖配置、统一管理依赖
Maven项目只支持单继承,但是可以通过 c 继承 b 、 b 继承 a 的方式实现 c 继承 a
实现:
- 创建maven模块 tlias-parent ,该工程为父工程,设置打包方式为 pom
- 在子工程的pom.xml文件中,配置继承关系
- 在父工程中配置各个工程公有的依赖(子工程会自动继承父工程的依赖),如果父工程和子工程都实现了某个依赖,版本以子工程的为准
版本锁定
在Maven中,可以在父工程的pom文件中通过<dependencyManagement>来统一管理依赖版本,在该标签下的依赖并不会被直接加入进来,如果要用到时直接引用即可,相应的,也不用写版本号了
自定义属性,可以通过 <properties>标签,指定相应的依赖的版本号,之后直接通过
${...}引用即可
聚合:将多个模块组织成一个整体,同时进行项目构建
聚合工程:一个不具有业务功能的“空”工程(有且只有一个pom文件)
作用:快速构建项目(无需根据依赖关系手动构建,直接在聚合工程上构建即可)
实现:maven中可以通过<modules>设置当前聚合工程所包含的子模块名称,module里面填写的内容为当前项目与子模块项目的物理位置关系。聚合工程中所包含的模块,在构建时,会自动根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写顺序无关
java<modules> <module>../tlias-pojo</module> <module>../tlias-utils</module> <module>../tlias-web-management</module> </modules>
继承与聚合
- 作用:
- 聚合用于快速构建项目
- 继承用于简化依赖配置、统一管理依赖
- 相同点:
- 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
- 聚合与继承均属于设计型模块,并无实际的模块内容
- 不同点:
- 聚合是在聚合工程中配置关系,聚合可以感知到参与聚合的模块有哪些
- 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
- 作用:
私服
介绍

- 依赖查找顺序:本地仓库 -> 私服 -> 中央仓库
- 注意:私服在企业项目开发中,一个项目/公司,只需要一台即可
资源上传与下载

步骤 (在Maven的conf配置文件中改)
例如:
访问私服:http://192.168.150.101:8081
访问密码:admin/admin
使用私服,需要在maven的settings.xml配置文件中,做如下配置:
需要在 servers 标签中,配置访问私服的个人凭证(访问的用户名和密码)
xml<server> <id>maven-releases</id> <username>admin</username> <password>admin</password> </server> <server> <id>maven-snapshots</id> <username>admin</username> <password>admin</password> </server>在 mirrors 中只配置我们自己私服的连接地址(如果之前配置过阿里云,需要直接替换掉)
xml<mirror> <id>maven-public</id> <mirrorOf>*</mirrorOf> <url>http://192.168.150.101:8081/repository/maven-public/</url> </mirror>需要在 profiles 中,增加如下配置,来指定snapshot快照版本的依赖,依然允许使用
xml<profile> <id>allow-snapshots</id> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>maven-public</id> <url>http://192.168.150.101:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile>如果需要上传自己的项目到私服上,需要在项目的pom.xml文件中,增加如下配置,来配置项目发布的地址(也就是私服的地址)
xml<distributionManagement> <!-- release版本的发布地址 --> <repository> <id>maven-releases</id> <url>http://192.168.150.101:8081/repository/maven-releases/</url> </repository> <!-- snapshot版本的发布地址 --> <snapshotRepository> <id>maven-snapshots</id> <url>http://192.168.150.101:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>发布项目,直接运行 deploy 生命周期即可 (发布时,建议跳过单元测试)
Maven常见的打包方式:
- jar:普通模块打包,SpringBoot项目基本都是jar包(内嵌tomcat运行)
- war:普通web程序打包,需要部署在外部的tomcat服务器中运行
- pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理