Maven高级
1.分模块开发与设计
什么是分模块开发?
核心思想
- 每个模块只保留自己所需要的的配置文件
- 每个模块引入自己所需要的依赖
作用
- 很好的分离 , 可以实现按需加载
- 便于团队协作开发
- 更高的代码复用性
- 更有利于后期的维护
2.聚合
什么是聚合?
- 实现同时操作多个模块的操作就是聚合.例如:实现一次同时运行多个模块
怎么实现聚合?
-
创建一个新模块,打包类型定义为pom
<packaging>pom</packaging>
-
指定聚合的模块的名称
<modules> <module>聚合模块的路径</module> <module>../ssm_dao</module> <module>../ssm_service</module> <module>../ssm_pojo</module> </modules>
注 : 参与聚合操作的模块最终的执行顺序与模块间的依赖关系有关 , 与配置顺序无关
3.继承
什么是模块间的继承?
-
在聚合多个项目时,如果这些被聚合的项目中需要引入相同的Jar,那么可以将这些Jar写入父pom中,各个子项目继承该pom即可
-
父 pom配置 : 将需要继承的Jar包的依赖放入标签即可
<!-- 依赖管理 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.9.RELEASE</version> </dependency> </dependencies> </dependencyManagement> <!-- 插件管理 --> <build> <pluginManagement> <!--设置插件--> <plugins> <!--具体的插件配置--> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>80</port> <path>/</path> </configuration> </plugin> </plugins> </pluginManagement> </build>
-
子 pom配置
<parent> <groupId>com.itheima</groupId> <artifactId>ssm</artifactId> <version>1.0-SNAPSHOT</version> <relativePath>../ssm/pom.xml</relativePath> </parent>
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency>
作用
- 可以实现版本的统一控制 , 避免版本不同带来的冲突问题
4.继承与聚合的区别
- 作用
- 聚合用于快速构建项目
- 继承用于快速配置
- 相同点
- 聚合与继承的pom.xml文件打包方式均为pom , 可以将两种关系制作到同一个pom文件中
- 聚合与继承均属于设计型模块 , 并无实际的模块内容
- 不同点
- 聚合是在当前模块中配置关系 , 聚合可以感知到参与聚合的模块有哪些
- 继承是在子模块中配置关系 , 父模块无法感知哪些子模块继承了自己
5.属性
-
自定义属性
-
等同于定义变量 , 方便统一维护
-
定义格式
<properties> <spring.version>5.1.9.RELEASE</spring.version> </properties>
-
调用格式
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency>
-
-
-
内置属性
-
使用maven内置属性 , 快速配置
${version} : 获取当前pom的版本 ${groupId} : 获取当前pom的阻止id ${project.basedir} : 根节点的下一级节点
-
-
setting属性
-
使用maven配置文件setting.xml中的标签属性 , 用于动态配置
${settings.localRepository} : 获取本地仓库的地址
-
-
java系统属性和环境变量属性
-
查询命令
mvn help:system
-
获取方式
${user.name} ${键} : 获取值
-
6.资源配置
-
开启配置文件的加载
<build> <!--配置资源文件对应的信息--> <resources> <resource> <!--设定配置文件对应的位置目录,支持使用内置属性动态设定--> <directory>${project.basedir}/src/main/resources</directory> <!--开启对配置文件的资源加载过滤--> <filtering>true</filtering> </resource> </resources> <!--配置测试资源文件对应的信息--> <testResources> <testResource> <directory>${project.basedir}/src/test/resources</directory> <filtering>true</filtering> </testResource> </testResources> </build>
-
调用方式
${jdbc.url}
7.多环境配置
-
配置格式
<!--创建多环境--> <profiles> <!--定义具体的环境:生产环境--> <profile> <!--定义环境对应的唯一名称--> <id>prod</id> <!--定义环境中换用的属性值--> <properties> <jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url> </properties> <!--设置默认启动--> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <!--定义具体的环境:开发环境--> <profile> <id>dev</id> <properties> <jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url> </properties> </profile> </profiles>
-
执行命令
mvn 指令 -P id 例: mvn install -P prod