Maven学习——高级篇
一、分模块开发与设计
- 工程模块与模块划分
- 分模块开发
- 模块中仅包含当前模块对应的功能类与配置文件
- spring核心配置根据模块功能不同进行独立制作
- 当前模块所依赖的模块通过导入坐标的形式加入当前模块后才可以使用
- web.xml需要加载所有spring核心配置文件
二、聚合
-
多模块构建维护(实际工程开发中有些模块可能进行更新)
-
聚合的作用:通过建立一个聚合模块,该模块管理所有的工程模块,方便一次重新编译、更新
<!--ssm工程文件中的pom.xml-->
......
<project>
<!--定义该工程用于进行构建管理-->
<packaging>pom</packaging>
<!--管理的工程列表-->
<modules>
<!--具体的工程名称-->
<module>../ssm_pojo</module>
<module>../ssm_dao</module>
<module>../ssm_service</module>
<module>../ssm_controller</module>
</modules>
</project>
- 模块的类型
- pom、war、jar
三、继承
- 模块依赖关系维护
- 继承
(1)作用:通过继承实现在子工程中沿用父工程中的配置
(2)父工程pom.xml(ssm)
<!--声明此处进行依赖管理-->
<dependencyManagement>
<dependencies>
...
</dependencies>
</dependencyManagement>
(3)子工程pom.xml(ssm_pojo)
<!--定义该工程的父工程-->
<parent>
<groupId>com.itheima</groupId>
<artifactId>ssm</ artifactId>
<version>1.0-SNAPSHOT</version>
<!--填写父工程的pom文件-->
<relativePath>../ssm/pom.xml</relativePath>
</parent>
(4)聚合和继承小结
- 作用:
- 相同点:
- 不同点:
- 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
- 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
四、属性
-
作用:等同于定义变量,方便统一维护
-
定义格式:
<!--定义自定义属性--> <properties> <spring.version>5.1.9.RELEASE</spring.version> <junit.version>4.12</junit.version> </properties>
-
调用格式:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependeney>
(4)系统属性
(5)环境变量属性
五、版本管理
(1)工程版本
- SNAPSHOT(快照版本)
- RELEASE(发布版本)
(2)工程版本号约定
- 约定规范:
- 范例:
- 5.1.9.RELEASE
六、资源配置
资源多文件配置
<!-―定义自定义属性-->
<properties>
<spring.version>5.1.9.RELEASE</spring.version>
<junit.version>4.12</junit.version>
<jdbc.url>jdbc:MysqL://127.0.0.1:3306/ssm_db</jdbc.ur1>
</properties>
<build>
<!--配置资源文件对应的信息-->
<resources>
<resource>
<!--设定配置文件对应的位置目录,支持使用属性动态设定路径-->
<directory>${project.basedir}/src/main/resources</directory>
<!--开启对配置文件的资源加载过滤-->
<filtering>true</filtering>
</resource>
<resources>
</build>
七、多环境开发配置
(1)多环境兼容
<!--创建多环境-->
<profiles>
<!--定义具体的环境:生产环境-->
<profile>
<!--定义环境对应的唯一名称-->
<id>pro_env</id>
<!--定义环境中换用的属性值-->
<properties></properties>
<!--设置默认启动-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--定义具体的环境:开发环境-->
<profile>
<id>dep_env</id>
<properties></properties>
</profile>
</profiles>
(2)加载指定环境
- 作用
- 加载指定环境配置
- 调用格式
mvn 指令 -P 环境定义id
- 范例
mvn install -P pro env
八、私服
(一)nexus服务器安装与启动
(1)Nexus安装、启动与配置
-
Nexus是Sonatype公司的一款maven私服产品
-
启动服务器(命令行启动)
nexus-exe /run nexus
-
访问服务器(默认端口:8081)
http://localhost:8081
(2)私服资源获取
(1)仓库分类
-
宿主仓库hosted
- 保存无法从中央仓库获取的资源
- 自主研发
- 第三方非开源项目
- 保存无法从中央仓库获取的资源
-
代理仓库proxy
- 代理远程仓库,通过nexus访问其他公共仓库,例如中央仓库
-
仓库组group
- 将若干个仓库组成一个群组,简化配置
- 仓库组不能保存资源,属于设计型仓库
(2)资源上传
(三)本地仓库访问私服
- IDEA环境中资源上传与下载
- 配置本地仓库访问私服的权限(maven库的settings.xml)
<!--配置访问服务器的权限,用户名密码-->
<servers>
<server>
<id>shine-maven-release</id>
<username>admin</username>
<password>admin</password>
</server>
</servers>
- 配置本地仓库资源来源(maven库的settings.xml)
<mirrors>
<!--自定义私服-->
<mirror>
<id>nexus-shine</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
</mirrors>
(四)IDEA访问私服与组件上传
- 配置当前项目访问私服上传资源的保存位置(pom.xml)
<!--发布配置管理-->
<distributionManagement>
<repository>
<id>shine-maven-release</id>
<url>http://localhost:8081/repository/shine-maven-release/</ur1>
<repository>
<snapshotRepository>
<id>shine-maven-snapshots</id>
<ur1>http://localhost:8081/repository/shine-maven-snapshots/</ur1>
</snapshotRepository>
</distributionManagement>
- 发布资源到私服:
mvn deploy