Maven进阶1 -- 分模块开发、依赖管理、聚合与继承、属性、版本管理、多环境开发、跳过测试

目录

1.分模块开发

将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享。

 案例:拆分一下这个SSM整合案例

①创建maven模块

 demo项目下的pom.xml文件(主要看一下依赖)

<dependencies><!--依赖domain运行--><dependency><groupId>org.example</groupId><artifactId>demo_pojo</artifactId><version>1.0-SNAPSHOT</version></dependency><!--依赖dao运行--><dependency><groupId>org.example</groupId><artifactId>demo_dao</artifactId><version>1.0-SNAPSHOT</version></dependency><!--其它依赖-->...
</dependencies>

 demo_pojo项目下的pom.xml文件(关注groupId和artifactId)

<groupId>org.example</groupId>
<artifactId>demo_pojo</artifactId>
<version>1.0-SNAPSHOT</version>

  demo_dao项目下的pom.xml文件(关注groupId和artifactId、依赖)

<groupId>org.example</groupId>
<artifactId>demo_dao</artifactId>
<version>1.0-SNAPSHOT</version><dependencies><!--依赖domain运行--><dependency><groupId>org.example</groupId><artifactId>demo_pojo</artifactId><version>1.0-SNAPSHOT</version></dependency>        <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.13</version></dependency>
</dependencies>

②通过install指令安装到本地仓库

2.依赖管理

依赖具有传递性,因而demo项目下的pom.xml文件可以简化。

<dependencies><!--依赖dao运行--><dependency><groupId>org.example</groupId><artifactId>demo_dao</artifactId><version>1.0-SNAPSHOT</version></dependency><!--其它依赖-->...
</dependencies>

可选依赖 -- 对外隐藏当前依赖的资源

<dependency><groupId>org.example</groupId><artifactId>demo_dao</artifactId><version>1.0-SNAPSHOT</version><optional>false</optional>
</dependency>

排除依赖 -- 排除当前依赖中的某个资源

<dependency><groupId>org.example</groupId><artifactId>demo_dao</artifactId><version>1.0-SNAPSHOT</version><exclusions><exclusion><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId></exclusion></exclusions>
</dependency>

3.聚合

聚合:将多个模块组织成一个整体,同时进行项目构建。

聚合工程:通常是一个不具有业务功能的 “空” 工程(有且仅有一个pom文件)

作用:当工程中某个模块发生更新时,必须保障工程中相关联的模块同步更新。

例:①创建一个demo_aggregate项目,设置打包类型为pom

<groupId>org.example</groupId>
<artifactId>demo_aggregate</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

②设置当前聚合工程所包含的子模块名称

<!--设置管理的模块名称-->
<modules><module>../demo</module><module>../demo_dao</module><module>../demo_pojo</module>
</modules>

 

4.继承

概念:继承描述的是两个工程间的关系,子工程可以继承父工程的配置信息,常见于依赖关系的继承。能够简化配置减少版本冲突

例:在上面聚合工程的基础上修改配置。 

①提取一些公共性的依赖,放到在父工程demo_aggregate的pom.xml中

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.0.10</version></dependency>...
</dependencies>

 ②在子工程demo、demo_dao和demo_pojo中配置当前工程依赖父工程

<parent><groupId>org.example</groupId><artifactId>demo_aggregate</artifactId><version>1.0-SNAPSHOT</version><relativePath>../demo_aggregate/pom.xml</relativePath>
</parent>

③在父工程demo_aggregate的pom.xml中配置子工程中可选的依赖关系

<dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies>
</dependencyManagement>

在子工程demo中使用父工程中的可选依赖

仅需要配置<groupId>和<artifactId>,无需提供版本,版本由父工程统一提供。

  <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency></dependencies>

5.属性

例1在配置文件pom.xml中自定义属性,从而简化配置。

<!--定义属性-->
<properties><spring.version>6.0.10</spring.version>
</properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version><scope>test</scope></dependency>
</dependencies>

例2资源文件引用属性。

pom.xml文件,自定义属性,配置过滤器

<!--定义属性-->
<properties><jdbc.url>jdbc:mysql://localhost:3306/ssm_db</jdbc.url>
</properties><!--开启资源文件目录加载属性的过滤器-->
<build><resources><resource><directory>${project.basedir}/src/main/resources</directory><filtering>true</filtering></resource></resources>
</build>

②在资源中引用属性

/src/main/resources/jdbc.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=${jdbc.url}
jdbc.username=root
jdbc.password=123456

6.版本管理

  • SNAPSHOT(快照版本):项目开发过程中临时输出的版本,称为快照版本。
  • RELEASE(发布版本):较为稳定的版本。

7.多环境开发

不同环境下,所需要的配置可能不同。

 在demo_aggregate工程的pom.xml文件中配置多环境。

<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><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.2.2.2:3306/ssm_db</jdbc.url></properties></profile>
</profiles>

8.跳过测试

应用场景:①功能更新中且没有开发完毕。②快速打包

①快捷方式

 ②细粒度控制跳过测试

<plugins><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.19.1</version><configuration><skipTests>false</skipTests><!--排除不参与测试的内容--><excludes><exclude>**/BookServiceTest.java</exclude></excludes></configuration></plugin>
</plugins>

③maven指令

maven install -D skipTests

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/39670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【wiki】电竞助手掉落提醒 EsportsHelper「Webhook」「钉钉」「饭碗警告」「企业微信」「Discord」

介绍 本项目链接 Github电竞助手链接 github上项目电竞助手(EsportsHelper)的掉落提醒配置教程,当有掉宝的时候会发送你信息提示. 至于这个脚本是怎么使用的简单说一下,就是通过自动观看英雄联盟直播 从而获取奖励(仅限直营服),有兴趣的可以去github上看readme,非常详细,支持…

javaScript:数组检测

目录 一.前言 二.数组检测方法 1.every&#xff08;&#xff09; 2.some&#xff08;&#xff09; 3.filter&#xff08;&#xff09; 一.前言 数组检测是指在编程中对数组进行验证和检查的过程。数组检测可以涉及以下方面&#xff1a; 确定数组的存在&#xff1a;在使用数…

一种多策略下RabbitMQ的延时队列实现

1.为什么会用到延时队列? 场景: 最近在开发一款系统中遇到这样一个场景,A系统开通套餐需要把套餐信息以邮件的形式发送给相关工作人员,经过人工审核通过后,在B系统里面开通,A系统会调B系统套餐列表接口查询套餐是否开通成功,开通成功则从A系统去完成订单,假如超过设定时间未开…

韦东山-电子量产工具项目:显示单元

所有代码都已通过测试跑通&#xff0c;其中代码结构如下&#xff1a; 一、include文件夹 1.1 disp_manager.h #ifndef _DISP_MANAGER_H //防止头文件重复包含,只要右边的出现过&#xff0c;就不会再往下编译 #define _DISP_MANAGER_H //区域结构体 typedef struct DispBuff …

leetcode810. 黑板异或游戏(博弈论 - java)

黑板异或游戏 lc 810 - 黑板异或游戏题目描述博弈论 动态规划 lc 810 - 黑板异或游戏 难度 - 困难 原题链接 - 黑板异或游戏 题目描述 黑板上写着一个非负整数数组 nums[i] 。 Alice 和 Bob 轮流从黑板上擦掉一个数字&#xff0c;Alice 先手。如果擦除一个数字后&#xff0c;剩…

谈谈网络协议的定义、组成和重要性

个人主页&#xff1a;insist--个人主页​​​​​​ 本文专栏&#xff1a;网络基础——带你走进网络世界 本专栏会持续更新网络基础知识&#xff0c;希望大家多多支持&#xff0c;让我们一起探索这个神奇而广阔的网络世界。 目录 一、网络协议的定义 二、网络协议的组成 1、…

出于网络安全考虑,印度启用本土操作系统”玛雅“取代Windows

据《印度教徒报》报道&#xff0c;印度将放弃微软系统&#xff0c;选择新的操作系统和端点检测与保护系统。 备受期待的 "玛雅操作系统 "将很快用于印度国防部的数字领域&#xff0c;而新的端点检测和保护系统 "Chakravyuh "也将一起面世。 不过&#xf…

运维监控学习笔记5

Linux的内存是虚拟内存&#xff0c;是物理内存和交换分区swap。 内存&#xff1a; 页&#xff1a;4K&#xff0c; 硬盘&#xff1a;块。 寻址&#xff1a; 空间&#xff1a;内存的合并。大页内存。 free命令&#xff1a; [rootvm1 ~]# free -htotal used fre…

cesium学习记录08-鼠标绘制多边形

上一篇学习了实体的一些基础知识&#xff0c;这一篇来学习鼠标绘制实体多边形的实现 一、方法一&#xff1a; 1&#xff0c;结果显示 贴地&#xff1a; 不贴地&#xff1a; 2&#xff0c;方法全部代码&#xff1a; 主方法&#xff1a; /*** 绘制多边形* param {Object} op…

华为OD机试 - 公共子串计算(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》。 刷的越多&…

VictoriaMetrics部署及vmalert集成钉钉告警

1、部署VictoriaMetrics cd /usr/local wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.65.0/victoria-metrics-amd64-v1.65.0.tar.gz mkdir victoria-metrics && tar -xvzf victoria-metrics-amd64-v1.65.0.tar.gz && \ mv …

清风数学建模——拟合算法

拟合算法 文章目录 拟合算法概念 确定拟合曲线最小二乘法的几何解释求解最小二乘法matlab求解最小二乘法如何评价拟合的好坏计算拟合优度的代码 概念 在前面的篇幅中提到可以使用插值算法&#xff0c;通过给定的样本点推算出一定的曲线从而推算出一些想要的值。但存在一些问题…

解决内网GitLab 社区版 15.11.13项目拉取失败

问题描述 GitLab 社区版 发布不久&#xff0c;搭建在内网拉取项目报错&#xff0c;可能提示 unable to access https://github.comxxxxxxxxxxx: Failed to connect to xxxxxxxxxxxxxGit clone error - Invalid argument error:14077438:SSL routines:SSL23_GET_S 15.11.13ht…

QT网络编程之TCP

QT网络编程之TCP TCP 编程需要用到俩个类: QTcpServer 和 QTcpSocket。 #------------------------------------------------- # # Project created by QtCreator 2023-08-

SpringBoot 该如何预防 XSS 攻击

XSS 漏洞到底是什么&#xff0c;说实话我讲不太清楚。但是可以通过遇到的现象了解一下。在前端Form表单的输入框中&#xff0c;用户没有正常输入&#xff0c;而是输入了一段代码&#xff1a;</input><img src1 onerroralert1> 这个正常保存没有问题。问题出在了列表…

驱动 实现三个灯的亮灭

1、编写LED灯的驱动&#xff0c;可以控制三个灯&#xff0c;应用程序中编写控制灯的逻辑&#xff0c;要使用自动创建设备节点机制 head.h #ifndef __HEAD_H__ #define __HEAD_H__#define PHY_LED1_MODER 0x50006000 #define PHY_LED1_ODR 0x50006014 #define PHY_LED1_RCC 0x…

设计模式之责任链模式【Java实现】

责任链&#xff08;Chain of Resposibility&#xff09; 模式 概念 责任链&#xff08;chain of Resposibility&#xff09; 模式&#xff1a;为了避免请求发送者与多个请求处理者耦合在一起&#xff0c;于是将所有请求的处理者 通过前一对象记住其下一个对象的引用而连成一条…

【Python】使用python解析普通格式的报文为someip格式报文

文章目录 1.安装scapy库2.示例 1.安装scapy库 使用 pip 安装 scapy 第三方库&#xff0c;打开 cmd&#xff0c;输入以下命令&#xff1a; pip install scapy出现如图所示&#xff0c;表示安装成功&#xff1a; 2.示例 要解析someip格式报文&#xff0c;需要导入someip模块&a…

【Spring 】了解Spring AOP

目录 一、什么是Spring AOP 二、AOP的使用场景 三、AOP组成 四、Spring AOP的实现 1、添加Spring AOP依赖 2、定义切面和切点 3、定义相关通知 五、 AOP的实现原理 1、什么是动态代理 2、 JDK代理和CGLIB代理的区别 一、什么是Spring AOP AOP&#xff08;Aspect Ori…

PLY模型格式详解【3D】

本文介绍PLY 多边形文件格式&#xff0c;这是一种用于存储被描述为多边形集合的图形对象。 PLY文件格式的目标是提供一种简单且易于实现但通用的格式足以适用于各种模型。 PLY有两种子格式&#xff1a;易于入门的 ASCII 表示形式和用于紧凑存储和快速保存和加载的二进制格式。 …