Maven进阶
分模块开发与设计
- 将原始模块按照功能拆分成若干个子模块,方便模块间互相调用,接口共享
①:创建Maven模块
②:书写对应模块代码
③:通过maven指令安装模块到本地仓库(install指令)
依赖管理
依赖传递
- 依赖具有传递性
-直接依赖:在当前项目中通过依赖配置建立的依赖关系
-间接依赖:被资源的资源如果依赖其他资源,当前项目简介依赖其他资源
- 依赖传递冲突问题
-路径优先:当依赖中出现相同资源时,层级越深,优先级越低,层级越浅,优先级越高
-声明优先:当资源在相同级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
-特殊有限:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
可选依赖
- 可选依赖指对外隐藏当前所选依赖的的资源——不透明
<dependency>
<groupId>com.mei</groupId>
<artifactId>maven_03_pojo</artifactId>
<version>1.0-SNAPSHOT</version>
<optional>false</optional>
</dependency>
排除依赖
- 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本——不需要
<dependency>
<groupId>com.mei</groupId>
<artifactId>maven_04_dao</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
聚合工程开发
①:创建Maven模块,设置打包类型为pom
<packaging>pom</packaging>
②:设置当前聚合工程所包含的子模块名称
<modules>
<module>../maven_ssm</module>
<module>../maven_pojo</module>
<module>../maven_dao</module>
</modules>
继承与聚合
- 继承
-概念:与Java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
-作用:简化配置、减少版本冲突
①:创建Maven项目,设置打包类型为pom
<packaging>pom<packaging>
②:在父工程pom文件中配置依赖关系
<dependencis>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
...
</dependencis>
③:在父工程中配置子工程中可以选择的依赖
<dependencyManagement>
<dependencis>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
/
...
</dependencis>
<dependencyManagement>
④:在子工程中配置当前工程所继承的父工程
<parent>
<groupId>com.mei<groupId>
<artifactId>maven_parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../maven_parent/pom.xml</relativePath>
</parent>
⑤:在子工程中配置使用父工程中可选依赖的坐标
<dependencis>
<dependency>
<groupId>com.alibaba<groupId>
<artifactId>druid</artifactId>
</dependency>
</dependencis>
聚合与继承的区别
-
作用
-聚合用于快速构建项目
-继承用于快速配置 -
相同点:聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系打包到一个pom文件中;聚合继承语属于设计型模块,并无实际模块
-
不同点
-聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
-继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
属性
①:定义属性
<properties>
<spring.version>5.2.10.RELEASE</spring.version>
<junit.version>4.12</junit.version>
</properties>
②:引用属性
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
资源文件引用属性
①:定义属性
<properties>
<spring.version>5.2.10.RELEASE</spring.version>
<junit.version>4.12<junit.version>
<jdbc,url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.url>
</properties>
②配置文件引用属性
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=${jdbc.url}
jdbc.username=root
jdbc.password=root
③:开启资源文件目录加载属性的过滤器
<build>
<resources>
<resource>
<directory>${project.basdir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
多环境开发
①:定义多环境
<profiles>
<profile>
<id>env_dep</id>
<properties>
<jdbc,url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.url>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>env_pro</id>
...
</profile>
</profiles>
②:使用多环境
mvn 指令 -P 环境定义id
范例:
mvn install - P pro_env
跳过测试
mvn 指令 -D sikTests
mvn install -D skipTests
私服
简介
- 私服是一台独立的服务器,用于解决团队内部的资源共享与资源同步问题
Nexus
- 启动服务器
nexus.exe /run nexus
- 访问服务器(默认端口:8081)
http://localhost:8081
-
修改基础配置信息
-安装路径下etc目录中nexus-default.properties文件保存又nexus基础配置信息 -
修改服务器运行配置信息
-安装路径下bin目录中nexus.vmoptions文件保存又nexus服务器启动对应的配置信息