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

news2024/10/5 13:40:37

目录

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中配置当前工程依赖父工程

<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.coloradmin.cn/o/857678.html

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

相关文章

ApplicationContextInitializer

目录 在何处执行&#xff1f;何时初始化&#xff1f;自己写一个ApplicationContextInitializer 那这个类的设计具体有什么作用呢&#xff1f;&#xff1f;1. DelegatingApplicationContextInitializer2. SharedMetadataReaderFactoryContextInitializer3. ContextIdApplication…

试卷扫描去掉痕迹,这个工具很好用

随着科技的不断发展&#xff0c;试卷扫描越来越普及&#xff0c;成为了现代教育不可或缺的一部分。试卷扫描的优势在于可以快速高效地批改试卷&#xff0c;但试卷上的痕迹往往会干扰扫描的准确性。如果可以扫描试卷并将上面填写的答案内容擦除还可以针对打错的题目重新巩固&…

【Rust】Rust学习 第八章常见集合

Rust 标准库中包含一系列被称为 集合&#xff08;collections&#xff09;的非常有用的数据结构。大部分其他数据类型都代表一个特定的值&#xff0c;不过集合可以包含多个值。不同于内建的数组和元组类型&#xff0c;这些集合指向的数据是储存在堆上的&#xff0c;这意味着数据…

mybatis-flex探索

mybatis古今未来 最近无意之中发现了一个非常棒的持久层框架mybatis-flex&#xff0c;迫不及待研究了一下 发现简直就是我的梦中情框&#xff0c;之前写ibatis&#xff0c;后来写mybatis&#xff0c;接着写mybatis-plus&#xff0c;接着研究mybatis-flex ibatis ibatis是apa…

ssm在线医疗服务系统源码和论文PPT

ssm在线医疗服务系统源码和论文PPT003 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 选题意义、价值和目标&#xff1a; 随着经济的迅速发展,人们对生活水平和身体健康的要…

chatGPT应用于房地产行业

作为 2023 年的房地产专业人士&#xff0c;您无疑认识到技术对行业的重大影响。近年来&#xff0c;一项技术进步席卷了世界——人工智能。人工智能彻底改变了房地产业务的各个方面&#xff0c;从简化管理任务到增强客户互动。 在本文中&#xff0c;我们将探讨几种巧妙的人工智…

工业互联网发展在即 博晨(BOCHEN)攻克“卡脖子”难题

5G时代的到来&#xff0c;正在悄然掀起一场智能化技术改革的风暴。工业互联网未来一定要走向制造智能化&#xff0c;这可能是我们未来工业互联网推动工业系统新生态的核心问题。”中国电子信息行业联合会专家委员会主任董云庭就曾表示。目前&#xff0c;工业互联网已经覆盖至国…

DC电源模块在工业控制器中的重要性

BOSHIDA DC电源模块在工业控制器中的重要性 DC电源模块在工业控制器中起着非常重要的作用&#xff0c;它是实现工业控制器运转所必需的组成部分。 DC电源模块主要用于将交流电转换成直流电供给工业控制器中的各个部件&#xff0c;包括控制器内部的微处理器、传感器、执行器等等…

【C++】五分钟带你搞懂深浅拷贝

目录 拷贝函数 浅拷贝拷贝构造函数 深拷贝拷贝构造函数 总结 前言 前面我们学习了C的一些基本的知识点&#xff0c;并且介绍了一些STL里面String的一些关键操作&#xff0c;除了这些博主还新开了一个专栏关于Linux的讲解&#xff08;Linux专栏链接&#xff09;大家可以关注…

Redis-简单动态字符串(SDS)

文章目录 文章概要SDS数据结构定义SDS和C字符串的区别总结参考 文章概要 本篇文章&#xff0c;我们来学习Redis字符串的编码格式SDS编码&#xff0c;文章将将从以下几个方面介绍SDS&#xff1a; SDS的底层数据结构定义Redis是C写的&#xff0c;那SDS和C中的字符串的区别是什么…

勒索软件野蛮生长,迷雾中企业何去何从

根据GRIT最新发布的勒索软件报告显示&#xff0c;今年二季度观测到的勒索软件事件数量明显多于一季度&#xff0c;而导致这一情况的三大原因分别为&#xff1a;漏洞的大规模利用、勒索软件工具技术的“民主化”以及新兴勒索软件组织的野蛮生长。 报告公布了2023年最活跃最多产的…

第9集丨Vue 江湖 —— 监测数据原理

目录 一、修改数据时的一个问题1.1 现象一1.2 现象二 二、Vue监测数据原理2.1 模拟一个数据监测2.2 数据劫持2.3 Vue.set()/vm.$set()2.4 基本原理2.4.1 如何监测对象中的数据?2.4.2 如何监测数组中的数据?2.4.3 修改数组中的某个元素 2.5 案例2.5.1 需求功能2.5.2 实现 一、…

【深度学习 video detect】Towards High Performance Video Object Detection for Mobiles

文章目录 摘要IntroductionRevisiting Video Object Detection BaselinePractice for Mobiles Model Architecture for MobilesLight Flow 摘要 尽管在桌面GPU上取得了视频目标检测的最近成功&#xff0c;但其架构对于移动设备来说仍然过于沉重。目前尚不清楚在非常有限的计算…

android studio 实用插件推荐

本文字数&#xff1a;&#xff1a;2352字 预计阅读时间&#xff1a;8分钟 背景 现在做安卓开发的同学基本都是用 Android Studio 了吧&#xff0c;它具有强大的开放性&#xff0c;可以让用户根据自己的需求开发或使用一些插件辅助自己搬砖&#xff0c;当然开发插件我们可能还没…

操作系统—调度算法

进程调度算法 进程调度算法也称CPU调度算法 调度发生时期 当进程从运行状态转到等待状态&#xff1b;当进程从运行状态转到就绪状态&#xff1b;当进程从等待状态转到就绪状态&#xff1b;当进程从运行状态转到终止状态&#xff1b; 其中发生在 1 和 4 两种情况下的调度称为…

工业无线技术应用-无线控制斗轮机启停、故障等开关信号

斗轮堆取料机是一种对散料进行连续堆取作业的高效装卸大型机械,被广泛使用于火力发电厂和炼焦厂的输煤系统中。目前对斗轮机的技改主要为将斗轮机的部分程控信号改为无线传输&#xff0c;取代卷筒电机和电缆的应用。 多数情况下都是利用无线通讯做媒介&#xff0c;让工作人员通…

Shopee买家通系统可全自动批量注册虾皮买家号

Shopee买家通系统可批量注册虾皮买家号&#xff0c;如果想要拥有大量虾皮买家号&#xff0c;完全可以试试&#xff0c; 不过在注册之前我们需要先准备好账号所需要的资料&#xff0c;比如邮箱、手机号、ip、收货地址等。不过想要账号能自动化&#xff0c;对于账号资料也是有一…

SSL证书DV和OV的区别?

SSL证书是在互联网通信中保护数据传输安全的一种加密工具。它能够确保客户端和服务器之间的通信得以加密&#xff0c;防止第三方窃听或篡改信息。在选择SSL证书时&#xff0c;常见的有DV证书和OV证书&#xff0c;它们在验证标准和信任级别上有所不同。那么SSL证书DV和OV的有哪些…

TEC2083BS-PD码转换器(解决博世矩阵控制PELCO派尔高球机的问题)

TEC2083BS-PD码转换器 使用说明 1.设备概述 控制码转换器在安防工程中起着非常重要的角色&#xff0c;随着高速球型摄像机在安防工程中大范围的使用&#xff0c;而高速球厂家都因为某些原因很少使用博世、飞利浦的协议。为此&#xff0c;工程商经常会遇到博世协议和PELCO协议之…

【Oracle 数据库 SQL 语句 】积累1

Oracle 数据库 SQL 语句 1、分组之后再合计2、显示不为空的值 1、分组之后再合计 关键字&#xff1a; grouping sets &#xff08;&#xff08;分组字段1&#xff0c;分组字段2&#xff09;&#xff0c;&#xff08;&#xff09;&#xff09; select sylbdm ,count(sylbmc) a…