Maven高级
分模块开发
模块拆分原则
- 按功能
- 模块分层
模块的引用
- 示例代码
<dependency> <groupId>com.xxxx</groupId> <artifactId>maven_03_pojo</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
注意
- 打包的时候按照依赖关系,由最深层的包一个一个往外打包
依赖管理
概念
- 依赖管理指当前项目运行所需的jar,一个项目可以设置多个依赖
特性
-
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
-
- 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
-
- 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
隐藏依赖
- 隐藏03_pojo中的依赖
示例代码
<dependency> <groupId>com.xxxx</groupId> <artifactId>maven_03_pojo</artifactId> <version>1.0-SNAPSHOT</version> <!--可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖传递性--> <optional>true</optional> </dependency>
排除依赖
- 排除04_dao中的mybatis依赖
示例代码
<dependency> <groupId>com.xxxx</groupId> <artifactId>maven_04_dao</artifactId> <version>1.0-SNAPSHOT</version> <!--排除依赖是隐藏当前资源对应的依赖关系--> <exclusions> <exclusion> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> </exclusion> </exclusions> </dependency>
聚合与集成
聚合
- 概念
- 将多个模块组织成一个整体,同时进行项目构建的过程称为聚合
- 使用步骤
-
- 创建一个空的Maven工程,打包方式写为 pom
-
- - <modelVersion>4.0.0</modelVersion> <groupId>com.xxxx</groupId> <artifactId>maven_01_parent</artifactId> <version>1.0-RELEASE</version> <!--设置打包类型为pom--> <packaging>pom</packaging>
-
- 设置需要管理的模块坐标
-
<!--设置管理的模块名称--> <modules> <module>../maven_02_ssm</module> <module>../maven_03_pojo</module> <module>../maven_04_dao</module> </modules> ``` - 注意:坐标的顺序可以随便写,Maven会按照依赖关系进行打包编译
-
继承
- 概念
- 继承描述的是两个工程间的关系,
与java中的继承相似,
子工程可以继承父工程中的配置信息,
常见于依赖关系的继承
- 继承描述的是两个工程间的关系,
- 使用步骤
- 1.创建父工程
- 示例代码
<!--父工程打包方式设置为pom--\> <packaging>pom\</packaging\>
- 坐标继承给子类
- 示例代码
就是正常的denpences
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version> </dependency> </dependencies> ```
- 示例代码
- 子类可以选择性继承
- 示例代码
添加dependencyManagement标签<dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> ```
- 示例代码
- 2.配置子工程
- 示例代码
-
<!--填写父工程的pom文件,根据实际情况填写--> <relativePath>../maven_01_parent/pom.xml</relativePath>
-
- 子类工程中添加依赖信息
- 全部继承过来的坐标
- 定义该工程的父工程
<parent> <groupId>com.xxxx</groupId> <artifactId>maven_01_Spring</artifactId> <version>1.0-RELEASE</version> <!--填写父工程的pom文件,根据实际情况填写--> <relativePath>../maven_01_Spring/pom.xml</relativePath> </parent>
- 定义该工程的父工程
- 子类选择性继承的部分
-
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency>
-
- 全部继承过来的坐标
- 示例代码
- 1.创建父工程
属性管理
- 定义属性变量
-
<!--定义自定义属性--> <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>
-
- 使用范围
- 有继承关系就可以使用
- 好处
- 统一方便管理
- 配置文件加载属性
- 1.定义自定义属性
-
<!--定义自定义属性--> <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>
-
- 2.配置文件引用属性
-
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=${jdbc.url} jdbc.username=root jdbc.password=root
-
-
- 开启资源文件目录加载属性的过滤器
-
-
-
<build> <resources> <resource> <directory>${project.basedir}/src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
-
-
- 方法二
- 使用相对资源路径
<build> <resources> <resource> <directory>../Spring_02/src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
其实也是改变属性加载的范围
- 使用相对资源路径
- 配置maven打war包时报错
- 方法一
- 忽略web.xml检查
-
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.2.3</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build>
-
- 忽略web.xml检查
- 方法二
- 在WEB-INF中创建一个空的xml文件
- 方法一
- 1.定义自定义属性
- 属性分类
- 自定义属性(常用)
- 内置属性
- Setting属性
- Java系统属性
- 环境变量属性
聚合 和 继承的关系
- 作用
- 聚合用于快速构建项目
- 继承用于快速配置项目
- 相同点
- 两个的打包方式均为pom,可以将两种关系制作到同一个pom文件中
- 聚合与继承均属于设计模块,并无实际的代码快内容
- 不同点
- 聚合是当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
- 继承是子模块中配置关系,父模块无法感知哪些子模块继承自己, 与java的类的继承相同
版本管理
工程版本
- SNAPSHOT(快照版本)
-
- 项目开发过程中临时输出的版本,称为快照版本
-
- 快照版本会随着开发的进展不断更新
-
- RELEASE(发布版本)
-
- 项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件是稳定的
-
- 即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本
-
发布版本
-
- alpha版
-
- beta版
-
- 纯数字版
多环境配置
作用
- maven提供配置多种环境的设定,帮助开发者使用过程中快速切换环境
在父工程中定义 profile标签
- 代码示例
-
<!--定义多环境--> <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_dep</id> <properties> <jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url> </properties> </profile> <!--测试环境--> <profile> <id>env_test</id> <properties> <jdbc.url>jdbc:mysql://127.3.3.3:3306/ssm_db</jdbc.url> </properties> </profile> </profiles>
-
打包方式
- 方法一
- 在 profile 标签中定义 <activation> 标签, 定义默认打包方式
- 方法二
跳过测试
- 方法一
- 方法二
- 如果有需要可以
添加 <includes>或者
添加<excludes>标签-
<build> <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.12.4</version> <configuration> <!--设置跳过测试--> <skipTests>true</skipTests> <includes> <!--包含指定的测试用例--> <include>/BookServiceTest.java</include> </includes> <!--排除掉不参与测试的内容--> <!--<excludes>--> <!-- <exclude>/BookServiceTest.java</exclude>--> <!--</excludes>--> </configuration> </plugin> </plugins> </build>
-
- 如果有需要可以
- 方法三
- 使用Maven 命令 跳过测试
- mvn install –D skipTests
- 使用Maven 命令 跳过测试
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/83314.html