Maven高级篇

news2024/11/27 8:37:09

分模块开发与设计

img

ssm_pojo拆分

  • 新建模块
  • 拷贝原始项目中对应的相关内容到ssm_pojo模块中
    • 实体类(User)
    • 配置文件(无)

ssm_dao拆分

  • 新建模块
  • 拷贝原始项目中对应的相关内容到ssm_dao模块中
    • 数据层接口(UserDao)
    • 配置文件:保留与数据层相关配置文件(3个)
      • 注意:分页插件在配置中与SqlSessionFactoryBean绑定,需要保留
    • pom.xml:引入数据层相关坐标即可,删除springmvc相关坐标
      • spring
      • mybatis
      • spring整合mybatis
      • mysql
      • druid
      • pagehelper
      • 直接依赖ssm_pojo(对ssm_pojo模块执行install指令,将其安装到本地仓库)

ssm_service拆分

  • 新建模块
  • 拷贝原始项目中对应的相关内容到ssm_service模块中
    • 业务层接口与实现类(UserService、UserServiceImpl)
    • 配置文件:保留与数据层相关配置文件(1个)
    • pom.xml:引入数据层相关坐标即可,删除springmvc相关坐标
      • spring
      • junit
      • spring整合junit
      • 直接依赖ssm_dao(对ssm_dao模块执行install指令,将其安装到本地仓库)
      • 间接依赖ssm_pojo(由ssm_dao模块负责依赖关系的建立)
    • 修改service模块spring核心配置文件名,添加模块名称,格式:applicationContext-service.xml
    • 修改dao模块spring核心配置文件名添加模块名称,格式:applicationContext-dao.xml
    • 修改单元测试引入的配置文件名称,由单个文件修改为多个文件

ssm_control拆分

  • 新建模块(使用webapp模板)
  • 拷贝原始项目中对应的相关内容到ssm_controller模块中
    • 表现层控制器类与相关设置类(UserController、异常相关…)
    • 配置文件:保留与表现层相关配置文件(1个)、服务器相关配置文件(1个)
    • pom.xml:引入数据层相关坐标即可,删除springmvc相关坐标
      • spring
      • springmvc
      • jackson
      • servlet
      • tomcat服务器插件
      • 直接依赖ssm_service(对ssm_service模块执行install指令,将其安装到本地仓库)
      • 间接依赖ssm_dao、ssm_pojo
    • 修改web.xml配置文件中加载spring环境的配文件名称,使用通配符*,加载所有applicationContext开始的配置文件

聚合

img

作用:聚合用于快捷构建maven工程,一次性构建多个项目/模块

制作方式:

  • 创建一个空模块,打包类型定义为pom

    <packaging>pom</packaging>
    
  • 定义当前模块进行构建操作时关联的其他模块名称

    <modules>
    	<module>../ssm_controller</module>
    	<module>../ssm_service</module>
    	<module>../ssm_dao</module>
    	<module>../ssm_pojo</module>
    </modules>
    
  • 注意:参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关

继承

img

  • 作用:通过继承可以实现在子工程中沿用夫工程中的配置

    • maven中的继承与java中的继承相似,在子工程中配置继承关系
  • 制作方式:

    • 在子工程中声明其父工程坐标与对应的位置

      <!--定义该工程的父工程 -->
      <parent>
      <groupId>com.itheima</groupId>
      <artifactId>ssm</artifactId>
      <version>1.0-SNAPSHOT</version>
      <!--填写父工程的pom文件 -->
      <relativePath>../ssm/pom.xml</relativePath>
      </parent>
      
      

继承依赖定义:

在父工程中定义依赖管理

<!--声明此处进行依赖管理-->
<dependencyManagement>
	<!--具体的依赖-->
	<dependencies>
		<!--spring环境-->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.1.9.RELEASE</version>
		</dependency>
	<dependencies>
<dependencyManagement>

继承依赖使用

在子工程中定义依赖关系,无需声明依赖版本,版本参照父工程中依赖的版本

<dependencies>
	<!--spring -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context</artifactId>
	</dependency>
</dependencies>

继承的资源

  • groupId:项目ID,项目坐标的核心元素
  • version:项目版本,项目坐标的核心因素
  • description:项目的描述信息
  • organization:项目的组织信息
  • inceptionYear:项目的创建年份
  • url:项目的URL地址
  • developers:项目的开发者信息
  • contributors:项目的贡献者信息
  • distributionManagement:项目的部署配置
  • issueManagement:项目的缺陷跟踪系统信息
  • ciManagement:项目的持续集成系统信息
  • scm:项目的版本控制系统
  • malilingLists:项目的邮件列表信息
  • properties:自定义的Maven属性
  • dependencies:项目的依赖配置
  • dependencyManagement:项目的依赖管理配置
  • repositories:项目的仓库配置
  • bulid:包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置
  • reporting:包括项目的报告输出目录配置、报告插件配置等

继承与聚合

作用:

  • 聚合用于快速构架项目
  • 继承用于快速配置

相同点:

  • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
  • 聚合与继承均属于设计型模块,并无实际的模块内容

不同点:

  • 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
  • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

属性

属性类别

  1. 自定义属性
  2. 内置属性
  3. Setting属性
  4. Java系统属性
  5. 环境变量属性
自定义属性

作用:等同于定义变量,方便统一维护

定义格式:

<!--定义自定义属性-->
<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>
</dependency>
内置属性

作用:使用maven内置属性,快速配置

调用格式:

${basedir}
${version}
setting属性

作用:使用maven配置文件setting.xml中的标签属性,用于动态配置

调用格式:

${settings.localRepository}
Java系统属性

作用:读取Java系统属性

调用格式:

${user.home}

系统属性查询方式

mvn help:system
环境变量属性

作用:使用maven配置文件setting.xml中的标签属性,用于动态配置

调用格式:

${env.JAVA_HOME}

环境变量属性查询方式

mvn help:system

版本管理

工程版本

SNAPAHOT(快照版本)

  • 项目开发过程中,为方便团队成员合作,解决模块间相互依赖和时时更新的问题,开发者对每个模块进行构建的时候,输出的临时性版本叫快照版本(测试阶段版本)
  • RELEASE(发布版本)
    • 项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构建文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本

工程版本号约定

约定规范

  • <主版本>,<次版本>,<增强版本>,<历程版本>
  • 主版本:表示项目重大架构的变更,如:spring5相较于spring4的迭代
  • 次版本:表示有较大的功能增加和变化,或全面系统的修复漏洞
  • 增量版本;表示有重大漏洞的修复
  • 里程碑版本:表明一个版本的里程碑(版本内容)

资源配置

配置文件引用pom属性

作用:在任意配置文件中加载pom文件中定义的属性

调用格式:

${jdbc.url}

开启配置文件加载pom属性

<!--配置资源文件对应的信息 -->
<resources>
	<resource>
		<!—设定配置文件对应的位置目录,支持使用属性动态设定路径-->
		<directory>${project.basedir}/src/main/resources</directory>
		<!--开启对配置文件的资源加载过滤-->
		<filtering>true</filtering>
	</resource>
</resources>

多环境开发配置

加载指定环境

作用:加载指定环境配置

调用格式:

mvn 指令 –P 环境定义id

示例:

mvn install –P pro_env

img

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

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

相关文章

spring学习笔记(2)

目录 RESTful Web 服务是干啥用的&#xff1f; 这个是什么意思&#xff1f;“OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.” 构建一个RESTful Web服务 GB有多大 点击…

IBM 创新方案+SNP数据转型助一汽大众实现数据平稳、高效迁移

近日&#xff0c;IBM 采用基于SNP Bluefield技术迁移的IBM Rapid Move创新数据迁移方案, 成功为一汽-大众实施了企业运营数据系统从 ECC 到 S/4 的升级项目。该项目系统切换耗时仅三天&#xff0c;不仅助客户高效、平稳迁移了系统数据&#xff0c;升级了数据底座&#xff0c;还…

第六讲:“声音”写具体

爸爸又打呼了!“呼噜一呼噜一像一股巨浪腾空而起&#xff0c;以每秒八十米的速度向上冲刺&#xff0c;力图掀开天花板&#xff0c;掀翻整座住宅楼;“呼噜一一呼噜一-”&#xff0c;像一台轰鸣的坦克在穿行&#xff0c;床垫在抖动&#xff0c;吊灯在摇晃&#xff0c;墙灰在簌籁(…

【办公软件篇】Listary搜索神器清除搜索历史记录

【办公软件篇】Listary搜索神器清除搜索历史记录 装机必备搜索神器—【蘇小沐】 文章目录 【办公软件篇】Listary搜索神器清除搜索历史记录1.实验环境 &#xff08;一&#xff09;删除搜索历史记录总结 1.实验环境 官网地址&#xff1a;Listary Discussions 系统版本Windows…

chatgpt赋能Python-pycharm怎么添加库函数

PyCharm怎么添加库函数 作为一位拥有10年python编程经验的工程师&#xff0c;我可以告诉大家&#xff0c;PyCharm是一个非常优秀的Python集成开发环境&#xff0c;它可以帮助我们更加高效地编写Python代码。但是在使用PyCharm的时候&#xff0c;我们经常需要使用一些库函数&am…

Vue3——简易个人空间(下半部分)

书接上回: 好友列表页面实现: 根据提供的api从云端将10个用户读进来 根据提供的api获得如下的json格式的数据&#xff0c;里面有四个用户的信息。 这里使用ajax进行实现要先在项目中安装jquery&#xff0c;使用命令行安装 npm i jquery然后在用户列表页面要先引入jquery i…

数据结构——插入排序与希尔排序

&#x1f307;个人主页&#xff1a;_麦麦_ &#x1f4da;今日名言&#xff1a;喜你成疾&#xff0c;药石无医。——《玫瑰与鹿》 一、前言 在本篇文章&#xff0c;我们将为小伙伴们进行排序概念的基本讲解并具体讲解其中的两种基础排序&#xff1a;插入排序和希尔排序&#xff…

BSQ格式数据转换为RSD缺省的BIP格式数据

李国春 RSD内部统一以BIP格式排列数据&#xff0c;并且文件格式&#xff08;非TFS&#xff09;数据倒放&#xff08;North Down&#xff09;。早期是为了和设备无关位图&#xff08;DIB&#xff09;一致节省一点处理时间。现在设备处理能力增强了这点时间已经无关紧要&#xf…

目标检测复盘 -- 1.mAP及其他评价指标

前言 为什么想单独做一个目标检测篇&#xff0c;主要是感觉自己是个半吊子&#xff0c;满瓶不响、半瓶晃荡&#xff0c;找工作的过程中&#xff0c;也被很多面试官问到哑口无言&#xff0c;基础真的不扎实&#xff0c;自己非常虚&#xff0c;想好好地、静下心来捋一下&#xf…

Linux环境搭建及问题解决方案

本文介绍了Linux环境搭建的过程以及遇到的问题和解决方案&#xff0c;并且介绍了常用的Linux命令. 一、Linux环境搭建 整体所需的环节 安装VMware安装Linux &#xff08;这边我选的是Server版本&#xff09;安装配置Samba&#xff08;Samba是一种Linux和Windows之间进行文件共…

基础知识(王爽老师书第一章)

文章目录 基础知识1.1 引言1.2 机器语言1.2 引言汇编语言的产生1.3 汇编语言的组成1.4 存储器1.5 指令和数据1.6 存储单元1.7 CPU对存储器的读写1.8 地址总线1.9 数据总线1.10 控制总线小结检测点1.11.11 内存地址空间1.12 主板1.13 接口卡1.14 各类存储器芯片1.15 内存地址空间…

【Linux】在Ubuntu中下载jdk以及卸载oraclejdk

介绍 这里是小编成长之路的历程&#xff0c;也是小编的学习之路。希望和各位大佬们一起成长&#xff01; 以下为小编最喜欢的两句话&#xff1a; 要有最朴素的生活和最遥远的梦想&#xff0c;即使明天天寒地冻&#xff0c;山高水远&#xff0c;路远马亡。 一个人为什么要努力&a…

短视频矩阵系统源码/开发技术文档

短视频矩阵系统技术文档&#xff1a; 可以采用电子文档或者纸质文档的形式交付&#xff0c;具体取决于需求方的要求。电子文档可以通过电子邮件、远程指导交付云存储等方式进行传输、 短视频矩阵{seo}源码是指将抖音平台上的视频资源进行筛选、排序等操作&#xff0c;进而提升…

【AcWing刷题】蓝桥杯专题突破-动态规划-dp入门(17)

目录 写在前面&#xff1a; 题目&#xff1a;821. 跳台阶 - AcWing题库 题目描述&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 数据范围&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 解题思路&#xff1a; 方法一&#xff1a;暴力搜索 代码…

chatgpt赋能Python-pandas_归一化

Pandas归一化是什么&#xff1f; 数据归一化是数据预处理中的一个重要步骤&#xff0c;它能够将不同范围的数值转化为相同的数值范围。Pandas是一种数据处理工具&#xff0c;因此它提供了许多函数来实现数据归一化。其中最常用的函数是Normalization。 Normalization函数的使…

树形结构数据扁平化js方法

最近在公司项目中遇到树形结构数据,在进行遍历查找指定的数据的时候一搬进行递归调用的查询,因为递归是效率很慢的方式,尤其是在数据量特别大的时候是及其浪费性能,所以我想了一个树形结构扁平化的方法,代码如下: /**** param {Array} arrs 树形数据* param {string} childs 树…

Java面向对象程序设计实验报告(实验五 接口的练习)

✨作者&#xff1a;命运之光 ✨专栏&#xff1a;Java面向对象程序设计实验报告 ​ 目录 ✨一、需求设计 ✨二、概要设计 ✨三、详细设计 ✨四、调试结果 ✨五、测试结果 ✨附录&#xff1a;源程序代码&#xff08;带注释&#xff09; demo5类 Instrument类 Piano类 …

SpringSecurity入门

SpringSecurity 为什么要有SpringSecurity&#xff1f;SpringSecurity入门案例SpringSecurity基本原理SpringSecurity两个重要接口 SpringSecurity-web权限方案认证整合数据库 为什么要有SpringSecurity&#xff1f; 正如你可能知道的关于安全方面的两个主要区域是“认证”和“…

Linux:如何在虚拟机中装配JDK 与Tomcat服务器?【2023最新版】

Linux系统版本&#xff1a;centos 7.5 x64位 VMware版本&#xff1a; VMware Workstation Pro 16 Xshell工具版本&#xff1a;Xshell 7 &#xff08;for home and free&#xff09; Xftp工具版本&#xff1a;Xftp 7 &#xff08;for home and free&#xff09; 文章目录 一、如…

chatgpt赋能Python-pycharm_python版本切换

Pycharm Python版本切换指南 作为广受欢迎的Python IDE之一&#xff0c;Pycharm 提供了快捷的Python版本切换功能以适应不同的项目需求。本文将为您介绍如何在Pycharm 中进行Python版本切换&#xff0c;并解答一些与版本兼容性相关的常见问题。 如何在Pycharm中进行Python版本…