当前位置: 首页 > news >正文

中小型网站建设与管理 唐军民/5151app是交友软件么

中小型网站建设与管理 唐军民,5151app是交友软件么,海口建站模板,微商来分销系统Maven仓库 (一)、Maven 简介1.传统项目管理的缺点2.Maven是什么3.Maven的作用 (二)、Maven 的下载与安装1.下载与认识目录2.配置Maven的全局环境 (三)、Maven 的基础概念1.Maven 仓库(1).仓库分类 2. Maven 坐标3.Maven 本地仓库配置(1).改变默认的仓库地址(2).改变远程仓库地址…

Maven仓库

  • (一)、Maven 简介
    • 1.传统项目管理的缺点
    • 2.Maven是什么
    • 3.Maven的作用
  • (二)、Maven 的下载与安装
    • 1.下载与认识目录
    • 2.配置Maven的全局环境
  • (三)、Maven 的基础概念
    • 1.Maven 仓库
        • (1).仓库分类
    • 2. Maven 坐标
    • 3.Maven 本地仓库配置
        • (1).改变默认的仓库地址
        • (2).改变远程仓库地址 (配置镜像)
  • (四)、第一个Maven项目 (纯手写)
    • 1.编写基本框架代码
    • 2.填充Pom.xml至项目中
    • 3.Maven 项目构建命令
    • 4.使用插件创建Maven项目
  • (五)、第一个Maven项目 (IDea)
    • 1.配置 Maven
    • 2.创建Maven项目
    • 3.设置插件
  • (六)、依赖管理
    • 1.依赖配置
    • 2.依赖传递
    • 3.可选依赖 (被动断)
    • 4.排除依赖 (主动断)
    • 5.依赖范围
    • 6.依赖范围传递性
  • (七)、生命周期与插件
    • 1.生命周期
        • (1).Maven生命周期三阶段
        • (2).Clean 生命周期
        • (3).Default 生命周期
        • (4).Site生命周期
    • 2.插件
        • (1).插件的定义
        • (2).插件的用列
  • (八)、分模块开发与设计
    • 1.拆分springMvc_ssm项目
        • (1).ssm_pojo 拆分
        • (2).ssm_dao 拆分
        • (3).ssm_service 拆分
        • (4).ssm_controller 拆分
        • (5).分模块开发小结
    • 2.模块聚合
        • (1).多模块构建维护
        • (2).聚合
    • 3.模块继承
        • (1).多模块继承
        • (2).继承
        • (3).继承的资源
        • (4).继承与聚合
    • 4.属性
        • (1).自定义属性
        • (2).内置属性
        • (3).Setting 属性
        • (4).Java 系统属性
        • (5).环境变量属性
    • 5.版本管理
        • (1).工程版本
        • (2).工程版本号约定
    • 6.资源配置
        • (1).资源配置多文件维护
        • (2).配置文件中读取pom属性值
    • 7.多环境开发配置
        • (1).多环境兼容
        • (2).加载指定环境
    • 8.跳过测试
        • (1).使用命令跳过测试
        • (2).使用界面操作跳过测试
        • (3).使用配置跳过测试
    • 9.私服 (局部多台计算机共享)
        • (1). 安装 Nexus 服务器
        • (2).启动 Nexus 服务器
        • (3).私服资源获取
        • (4).仓库分类 (三种)
        • (5).可视化UI资源上传
        • (6). 本地仓库访问私服
        • (7).idea 访问私服与组件上传

在这里插入图片描述

(一)、Maven 简介

1.传统项目管理的缺点

  1. jar 包不统一,jar 包不兼容;
  2. 工程升级维护过程操作繁琐;

2.Maven是什么

Maven 的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型 (POM)

POM (Project Object Model) : 项目对象模型

在这里插入图片描述

3.Maven的作用

  • 项目构建:提供标准的跨平台的自动化项目构建方式;
  • 依赖管理:方便快捷地管理项目依赖的资源 (jar 包), 避免资源间的版本冲突问题。
  • 统一开发结构: 提供标准的、统一的项目结构

在这里插入图片描述

(二)、Maven 的下载与安装

1.下载与认识目录

https://maven.apache.org/download.cgi

在这里插入图片描述

  • bin 目录:核心运行文件;
  • boot 目录: 类加载器;
  • conf 目录:核心配置;
  • lib 目录:所依赖的 jar 包;
    在这里插入图片描述

2.配置Maven的全局环境

1.配置高级环境
在这里插入图片描述
2.输入cmd 测试是否全局配置成功!!!
在这里插入图片描述

(三)、Maven 的基础概念

1.Maven 仓库

用于存储资源,包含各种 jar 包。

中央仓库由Maven开发者团队进行维护,私服服务器由各个公司的局域网进行管理。 正常开发者需要一个Jar现在本地找,假如本地找不到要门去私服下载对应的Jar包,要么去Maven官方管理的Maven中央仓库去下载。

在这里插入图片描述

(1).仓库分类

  1. 本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源;
  2. 远程仓库:非本机电脑上的仓库,为本地仓库提供资源
    ① 中央仓库:Maven 团队维护,存储所有资源的仓库;
    ② 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源;

私服的作用

① 保存具有版权的资源,包含购买或自主研发的 jar;
② 解决访问速度慢的问题;

2. Maven 坐标

描述仓库中资源的位置。 让Maven能够更快捷的帮助我们找到对应的Jar包。
在这里插入图片描述

组成:

groupId (组织ID): 定义当前 Maven 项目隶属的组织名称(通常是域名反写,如 org.mybatis) ;
artifactId (项目名ID): 定义当前 Maven 项目名称(通常是模块名称,例如 CRM, SMS)
version (项目版本号): 定义当前项目版本号;
packaging: 定义当前项目的版本号;

3.Maven 本地仓库配置

我们安装Maven的时候,官方不会给我们默认指定一个Maven的仓库的,需要我们开发者自己来对其进行配置和安装。

我们在命令控制台中输入 CMD 然后回车 ,再输入mvn,Maven官方会再电脑用户给我们生成一个 .m2的文件夹。这个文件夹就是我们所说的Maven本地仓库

在这里插入图片描述

(1).改变默认的仓库地址

在这里插入图片描述
在下面位置放置我们自定义的 Maven本地仓库地址
在这里插入图片描述

  <localRepository>E:\Maven\apache-maven-3.6.3\maven-repo</localRepository>

(2).改变远程仓库地址 (配置镜像)

因为我们没有私服,只能借用阿里云的镜像进行快速访问外网Maven中央仓库
在这里插入图片描述

    <mirror><!-- 此镜像的唯一标识符,用来区分不同 mirror 元素 --><id>nexus-aliyun</id><!-- 对哪个仓库进行镜像,简单来说就是要替换哪个仓库 --><mirrorOf>*</mirrorOf><!-- 镜像名称 --><name>Nexus aliyun</name><!-- 镜像 URL --><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror></mirrors

(四)、第一个Maven项目 (纯手写)

1.编写基本框架代码

我们需要手动编写: main包和test包在src父包中,然后分别在main和test的子包中写java包和resources包。
在这里插入图片描述

package main.java.com.jsxs;/*** @Author Jsxs* @Date 2023/8/1 16:09* @PackageName:main.java* @ClassName: Demo1* @Description: TODO* @Version 1.0*/
public class Demo1 {public static void main(String[] args) {System.out.println("你好 Maven!");}
}

在这里插入图片描述

2.填充Pom.xml至项目中

如果我们普通的Java目录想要变成一个Maven项目,那么我们需要在Src同级目录下编写一个文件 pom.xml。

<?xml version="1.0" encoding="UTF-8"?>
<!-- Maven根元素 这里面具有三个配置-->
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><!--  当前Maven的Pom对象版本  --><modelVersion>4.0.0</modelVersion><!--打包方式,web 工程打包为 war, java 工程打包为 jar--><packaging>war</packaging><!--    归属ID--><groupId>com.jsxs</groupId><!--    项目名ID--><artifactId>Maven_handle</artifactId><!--    项目版本号 SNAPSHOT代表开发版 ,RELEASE代表完成版--><version>0.0.1-SNAPSHOT</version><!--    项目名称--><name>Maven_handle</name><!--    项目描述--><description>Demo project for Maven_handle</description><!--    依赖管理--><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version></dependency></dependencies><build><!--设置插件--><plugins><!--      具体的配置插件      --><plugin><!--         这里需要我们的三件套       --><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><!--        配置一些默认的项        --><configuration><port>80</port><path>/</path></configuration></plugin></plugins></build>
</project>

3.Maven 项目构建命令

Maven 构建命令使用 mvn 开头,后面添加功能参数,可以一次执行多个命令,使用空格分隔。

在这里插入图片描述
其实这里分别对应着我们SpringBoot项目中的右侧功能栏目。

mvn compile #编译
mvn clean #清理
mvn test #测试 target 目录下 surefire-reports 有测试报告
mvn package #打包 只打包源程序
mvn install #安装到本地仓库
  1. 执行编译命令之后

在这里插入图片描述
在这里插入图片描述

  1. 执行清理的操作

在这里插入图片描述

在这里插入图片描述

  1. 执行测试

在这里插入图片描述
我们在target目录中可以看到我们的测试结果,都会被记录下来的
在这里插入图片描述

  1. 执行 打包

在这里插入图片描述

在这里插入图片描述

  1. 将我们的项目安装到本地仓库

在这里插入图片描述

在这里插入图片描述

4.使用插件创建Maven项目

(注意要用 命令行,不要用 powershell)

  1. 创建Java工程
mvn archetype:generate
-DgroupId={project-packaging}
-DartifactId={project-name}
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false
  1. 创建 web 工程:
mvn archetype:generate -DgroupId={project-packaging}
-DartifactId={project-name}
-DarchetypeArtifactId=maven-archetype-webapp 
-Dversion=0.0.1-snapshot 
-DinteractiveMode=false

在这里插入图片描述

(五)、第一个Maven项目 (IDea)

1.配置 Maven

在这里插入图片描述

2.创建Maven项目

在这里插入图片描述
在这里插入图片描述

3.设置插件

打包web项目打包成war; java工程打包成jar。

    <!--  构建  --><build><!--设置插件--><plugins><!--      具体的配置插件      --><plugin><!--         这里需要我们的三件套       --><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><!--        配置一些默认的项        --><configuration><port>80</port><path>/</path></configuration></plugin></plugins></build>

在这里插入图片描述

(六)、依赖管理

1.依赖配置

依赖指当前项目运行所需要的 jar, 一个项目可以设置多个依赖。

<!-- 设置当前项目所需要的所有 jar-->
<dependencies><!-- 设置具体的依赖 --><dependency><!-- 依赖所属群组 id--><groupId>junit</groupId><!-- 依赖所属项目 id--><artifactId>junit</artifactId><!-- 依赖版本号 --><version>4.12</version></dependency>
</dependencies>

2.依赖传递

就是说假如B项目使用了A项目本身的依赖,那么B项目将会拥有A项目所有的依赖,然而A项目是不变的。

在这里插入图片描述

依赖具有传递性:

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系;
  • 间接依赖:被依赖资源如果依赖其他资源,当前项目间接依赖其他资源;

在这里插入图片描述

依赖传递的冲突问题:

  • 路径优先:当依赖中出现相同的资源时,层级越浅,优先级越高,层级越深,优先级越低;
  • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的;
  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的;

在这里插入图片描述

3.可选依赖 (被动断)

可选依赖指对外隐藏当前所依赖的资源 - 不透明

当我们配置完这一项之后,假如别人引入我们的项目依赖,那么不会存在延申的依赖的。比如说我们在项目A中引入项目B,项目B的pom.xml的文件中在junit这个依赖,然后加入optional之后,我们就在项目A中看不到B中的Junit这个依赖。

<optional>true</optional>
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><optional>true</optional>
</dependency>

在这里插入图片描述

4.排除依赖 (主动断)

  • 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本 - 不需要

项目3中不添加 optional,我们这里在项目2中直接进行排除的操作。

 <!-- 具体依赖-->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><!-- 排除集合 --><exclusions><!-- 排除某一个具体的 --><exclusion><!-- 三件套 : 版本号就不用写了,因为一排除,就是排除所有版本--><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId></exclusion></exclusions>
</dependency>

我们也发现没存在 junit衍生的版本。
在这里插入图片描述

5.依赖范围

  • 依赖的 jar 默认情况可以在任何地方使用,可以通过 scope 标签设定其作用范围
  • 作用范围
    • 主程序范围内有效 (main 文件夹范围内
    • 测试程序范围内有效(test 文件夹范围内
    • 是否参与打包(package 指令范围内

在这里插入图片描述

6.依赖范围传递性

带有依赖范围的资源在进行传递时,作用范围会受到影响:

在这里插入图片描述

(七)、生命周期与插件

1.生命周期

Maven 构建生命周期描述的是一次构建过程中经历了多少个事件:
在这里插入图片描述

(1).Maven生命周期三阶段

  • clean: 清理工作
  • default: 核心工作,例如编译、测试、打包、部署等
  • site: 产生报告,发布站点等

在这里插入图片描述

(2).Clean 生命周期

  • pre-clean 执行一些需要在clean之前完成的工作
  • clean 移除所有上一次构建生成的文件
  • post-clean 执行一些需要在clean之后立刻完成的工作

(3).Default 生命周期

  • validate(校验) 校验项目是否正确并且所有必要的信息可以完成项目的构建过程。
  • initialize(初始化) 初始化构建状态,比如设置属性值。
  • generate-sources(生成源代码) 生成包含在编译阶段中的任何源代码。
  • process-sources(处理源代码) 处理源代码,比如说,过滤任意值。
  • generate-resources(生成资源文件) 生成将会包含在项目包中的资源文件。
  • process-resources (处理资源文件) 复制和处理资源到目标目录,为打包阶段最好准备。
  • compile(编译) 编译项目的源代码。
  • process-classes(处理类文件) 处理编译生成的文件,比如说对Java class文件做字节码改善优化。
  • generate-test-sources(生成测试源代码) 生成包含在编译阶段中的任何测试源代码。
  • process-test-sources(处理测试源代码) 处理测试源代码,比如说,过滤任意值。
  • generate-test-resources(生成测试资源文件) 为测试创建资源文件。
  • process-test-resources(处理测试资源文件) 复制和处理测试资源到目标目录。
  • test-compile(编译测试源码) 编译测试源代码到测试目标目录.
  • process-test-classes(处理测试类文件) 处理测试源码编译生成的文件。
  • test(测试) 使用合适的单元测试框架运行测试(Juint是其中之一)。
  • prepare-package(准备打包) 在实际打包之前,执行任何的必要的操作为打包做准备。
  • package(打包) 将编译后的代码打包成可分发格式的文件,比如JAR、 WAR或者EAR文件。
  • pre-integration-test(集成测试前) 在执行集成测试前进行必要的动作。比如说,搭建需要的环境。
  • integration-test(集成测试) 处理和部署项目到可以运行集成测试环境中。
  • post-integration-test(集成测试后) 在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。
  • verify (验证) 运行任意的检查来验证项目包有效且达到质量标准。
  • install(安装) 安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。
  • deploy(部署) 将最终的项目包复制到远程仓库中与其他开发者和项目共享。
    在这里插入图片描述

(4).Site生命周期

  • pre-site 执行一些需要在生成站点文档之前完成的工作
  • site 生成项目的站点文档
  • post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
  • site-deploy 将生成的站点文档部署到特定的服务器上

2.插件

(1).插件的定义

  • 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
  • 默认 maven 在各个生命周期上绑定有预设的功能
  • 通过插件可以自定义其他功能

(2).插件的用列

eg: 我们自定义在test测试的时候,进行打包的操作。

    <build><!--设置插件--><plugins><!--       打包插件     --><plugin><!--        三件套        --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><!--       执行集合         --><executions><!--          具体执行          --><execution><!--            执行目标            --><goals><!--              具体执行目标      --><goal>jar</goal></goals><phase>generate-test-resources</phase></execution></executions></plugin></plugins></build>

在这里插入图片描述
当我们点击生命周期的test的时候,我们发现帮助我们打成了一个jar包
在这里插入图片描述


(八)、分模块开发与设计

在实际开发中,dao、service、controller是不可能全部同时有一个人做的,也就是说我们的dao、service、contollrt是需要进行分包的操作的。
在这里插入图片描述

1.拆分springMvc_ssm项目

(1).ssm_pojo 拆分

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

(2).ssm_dao 拆分

在这里插入图片描述

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

在这里插入图片描述

注意: 我们发现问题,我们发现我们的dao层项目中需要使用到实体类,但是我们的dao项目中没有放实体的项目,所以我们需要对原先的 ssm_pojo进行安装到本地的仓库,然后我们在ssm_dao层使用三件套引用即可。

(3).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
    • 修改单元测试引入的配置文件名称,由单个文件修改为多个文件

注意: 因为我们的service层是需要我们的ssm_dao层的接口和实现类的,所以我们需要在ssm_dao 进行 install的操作,又因为我们ssm_dao install ssm_pojo, 所以直接依赖ssm_dao,间接依赖ssm_pojo

(4).ssm_controller 拆分

在这里插入图片描述

  • 新建模板(使用 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- 开始的配置文件
      在这里插入图片描述

运行的话,我们只需要运行Controller即可。因为我们其他的资源都放在本地仓库了,所以不需要进行启动其他的业务即可。

(5).分模块开发小结

  • 模块仅包含当前模块对应的功能类与配置文件
  • spring 核心配置根据模块功能不同进行独立制作
  • 当前模块所依赖的模块通过导入坐标的形式加入当前模块后才可以使用
  • web.xml 需要加载所有的 spring 核心配置文件

2.模块聚合

(1).多模块构建维护

在实际开发的过程中,我们会有很多模块,但是假如我们对一个模块进行更新后,其他模块不知到它更新。那么这个服务就会启动不起来。所以我们现在迫切需要一个统一的管理模块,负责管理我们的4个模块,当这个统一的模块更新的时候,这管理的所有模块都将一起进行更新,谁都不会落下

在这里插入图片描述

(2).聚合

  • 作用:聚合用于快速构建 maven 工程,一次性构建多个项目/模块。
  • 制作方式:
  1. 创建一个空模块,打包类型定义为 pom
  <!--定义该工程用于进行构建管理 --><packaging>pom</packaging>
  1. 定义当前模块进行构建操作时关联的其他模块名称
	<!-- 管理的工程列表  -->
<modules><!-- 具体的工程 --><module>../ssm_controller</module><module>../ssm_service</module><module>../ssm_dao</module><module>../ssm_pojo</module>
</modules>

注意事项:参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关;

3.模块继承

(1).多模块继承

比如说: 在我们日常开发中,我们使用多模块开发的时候,会遇到如下的问题:“我们在开发一个SpringBoot项目会出现版本依赖的版本号不一致的问题,所以我们需要对我们所有使用的公共版本号进行统一管理,避免出现不兼容的问题”。

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

  • maven 中的继承与 java 中的继承相似,在子工程中配置继承关系

(2).继承

我们不仅可以对版本依赖的版本号可以进行统一的管理,而且我们也可以使用 插件管理器 对其进行版本控制。

  1. 父工程进行声明的操作
    <!-- 声明此处进行依赖管理--><dependencyManagement><!--    具体的依赖集合    --><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies></dependencyManagement>
  1. 子工程和父工程进行联系
    <!--    给这个子工程进行指定其父工程的位置是哪个--><parent><!--     这里设置三件套   --><artifactId>Maven_Idea</artifactId><groupId>com.jsxs</groupId><version>1.0-SNAPSHOT</version><!--        这里我们需要指定父工程的pom.xml文件--><relativePath>pom.xml</relativePath></parent>
  • 在子工程中定义依赖关系,无需声明依赖版本,版本参照父工程中依赖的版本
<dependencies><!-- spring 环境 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId></dependency>
</dependencies>

(3).继承的资源

在这里插入图片描述

(4).继承与聚合

  • 作用
    • 聚合用于快速构建项目
    • 继承用于快速配置
  • 相同点
    • 聚合与继承 的 pom.xml 文件打包方式均为 pom,可以将两种关系制作到同一个 pom 文件中
    • 聚合与继承 均属于 设计型模块,并无实际模块内容
  • 不同点
    • 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
    • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

4.属性

我们现在已经成功的解决了 父模块 与 子模块 之间的版本信息冲突的操作, 现在还存在着一种就是 父模块内部之间的版本依赖问题,比如说:“我们父工程内部使用mybatis与spring的时候要使用统一的版本号管理操作”

(1).自定义属性

  • 作用:等同于定义变量,方便统一维护
  • 定义格式:
    <properties><!--        基本格式为:  技术名称.version--><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><spring.version>5.1.9</spring.version></properties>

使用格式

	<version>${spring.version}</version>

(2).内置属性

  • 作用:使用 maven 内置属性,快速配置
  • 调用格式:
${basedir}
${version}

(3).Setting 属性

  • 作用:使用 maven 配置文件 settings.xml 中的标签属性,用于动态配置
  • 调用格式
${settings.localRepository}

(4).Java 系统属性

  • 作用: 读取 Java 系统属性
  • 调用格式
${user.home}
  • 系统属性查询方式
mvn help:system

在这里插入图片描述

(5).环境变量属性

  • 调用格式
${env.JAVA_HOME}
  • 环境变量属性查询方式
mvn help:system

在这里插入图片描述

5.版本管理

(1).工程版本

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

(2).工程版本号约定

  • 约定规范
    • <主版本>.<次版本>.<增量版本>.<里程碑版本>
    • 主版本:表示项目重大架构的变更,如: spring 5 相较于 spring 4 的迭代
    • 次版本:表示有较大的功能增加和变化,或者全面系统地修复漏洞
    • 增量版本:表示有重大漏洞的修复
    • 里程碑版本:表明一个版本的里程碑(版本内部)。这样的版本
  • 范例
    5.1.9.RELEASE

6.资源配置

(1).资源配置多文件维护

也就是说: 我们需要通过 Maven 来配置 比如数据库 驱动器、密码、账户等其他类似的数据。
在这里插入图片描述

  1. 定义格式:
<properties>
<jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.url>
</properties>
<build>
<!-- 配置资源文件对应的信息 -->
<resources><resource><!-- 设定配置文件对应的位置目录,支持使用属性动态设定路径 --><directory>${project.basedir}/src/main/resources</directory><!-- 开启对配置文件的资源加载过滤 --><filtering>true</filtering></resource>
</resources>
<!--配置测试资源文件对应的信息-->
<testResources><testResource><directory>${project.basedir}/src/test/resources</directory><filtering>true</filtering></testResource>
</testResources>
<build/>
  1. 调用格式
${jdbc.url}

在这里插入图片描述
在这里插入图片描述

(2).配置文件中读取pom属性值

  • 在配置文件中设置配置文件路径。
  • 开启加载pom属性过滤功能。
  • 使用${属性名}格式引用pom属性。

在这里插入图片描述

7.多环境开发配置

(1).多环境兼容

在这里插入图片描述

    <!--  1.  创建多环境--><profiles><!--    2.    定义具体的环境: 生产环境--><profile><!--      2.1      定义环境对应的唯一名称--><id>pro_env</id><!--        2.2    定义环境中专用的属性值--><properties><jdbc.url>jdbc:mysql://127.454545.1.1:3306/ssm_db</jdbc.url></properties></profile><!--    3.    定义具体的环境: 开发环境--><profile><!--     3.1       定义环境对应的唯一名称--><id>pro_dep</id><!--      3.2      定义环境中专用的属性值--><properties><jdbc.url>jdbc:mysql://127.1.8888.1:3306/ssm_db</jdbc.url></properties><!--设置默认启动 ⭐--><activation><activeByDefault>true</activeByDefault></activation></profile></profiles>

在这里插入图片描述

(2).加载指定环境

  • 作用:加载指定环境配置
  • 调用格式
mvn 指令 -P 环境定义id

例如:

mvn install –P pro_env

8.跳过测试

(1).使用命令跳过测试

  • 命令
  1. 整体模块功能未开发。
  2. 模块中某个功能未开发完毕。
  3. 单个功能更新调试导致其他功能失败。
  4. 快速打包。
mvn 具体指令 -D skipTestseg: mvn install -D skipTest

(2).使用界面操作跳过测试

单机 test 之后,我们点击闪电的图标就会发现会有一个画线的操作
在这里插入图片描述

(3).使用配置跳过测试

<build>
<piugins>
<plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version><configuration><skipTests>true</skipTests><!-- 设置跳过测试 --><includes> <!-- 包含指定的测试用例 --><include>**/User*Test.java</include></includes><excludes><!-- 排除指定的测试用例 --><exclude>**/User*TestCase.java</exclude></excludes></configuration>
</plugin>
<piugins/>
<build>

9.私服 (局部多台计算机共享)

在这里插入图片描述

(1). 安装 Nexus 服务器

  • Nexus 是 Sonatype 公司的一款 maven 私服产品
  • 下载地址:https://help.sonatype.com/repomanager3/download

在这里插入图片描述

(2).启动 Nexus 服务器

在这里插入图片描述

在这里插入图片描述

1. 服务器通过命令行进行启动的操作

nexus /run nexus

在这里插入图片描述
2.访问服务器(默认端口:8081)

访问Nexus的服务器: http://localhost:8081/

在这里插入图片描述

  • 修改基础配置信息

    • 安装路径下 etc 目录中 nexus-default.properties 文件保存有 nexus 基础配置信息,例如默认访问端口
    • 在这里插入图片描述
  • 修改服务器运行配置信息

    • 安装路径下 bin 目录中 nexus.vmoptions 文件保存有 nexus 服务器启动对应的配置信息,例如默认占用内存空间
      在这里插入图片描述

(3).私服资源获取

在这里插入图片描述

(4).仓库分类 (三种)

  • 宿主仓库 hosted
    • 保存无法从中央仓库获取的资源
      • 自主研发
      • 第三方非开源项目
  • 代理仓库 proxy
    • 代理远程仓库,通过 nexus 访问其他公共仓库,例如中央仓库
  • 仓库组 group
    • 将若干个仓库组成一个群组,简化配置
    • 仓库组不能保存资源,属于设计型仓库

(5).可视化UI资源上传

  1. 登入我们的账号

在这里插入图片描述

  1. 仓库的分类图标

在这里插入图片描述

  1. 创建主机仓库

在这里插入图片描述
在这里插入图片描述

  1. 将我们创建的主机仓库放入 仓库组中

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  1. 给指定的仓库添加文件

在这里插入图片描述
进行上传我们的组件的信息
在这里插入图片描述
寻找上传的jar包和自定义我们的三件套
在这里插入图片描述

查看是否上传成功
在这里插入图片描述

(6). 本地仓库访问私服

在这里插入图片描述

  1. 做好两个仓库,其中一个是开发版,另一个是稳定版。

在这里插入图片描述

  1. 在Maven的核心配置文件中添加访问的账户和密码 ⭐
  <!-- 配置访问私服的用户名和密码 --><servers><server><id>heima-release</id><username>admin</username><password>xxx</password></server><server><id>heima-snapshot</id><username>admin</username><password>xxx</password></server>
</servers>
  1. 配置本地仓库镜像 ⭐

寻找我们的本地仓库位置
在这里插入图片描述

      <!-- 本地私服的仓库 --><id>nexus-heima</id><!-- 意味着所有资源全部在这里取 --><mirrorOf>*</mirrorOf><!-- 仓库的路径 --><url>http://localhost:8081/repository/maven-public/</url></mirror>

在这里插入图片描述

(7).idea 访问私服与组件上传

  • 配置当前项目访问私服上传资源的保存位置 (pom.xml)
    <!--  发布配置管理  --><distributionManagement><!--  具体上传的仓库--><repository><!--      根据这个名称去我们本地仓库中找 对应的账户和密码      --><id>heima-release</id><!--        仓库要上传的路径    --><url>http://localhost:8081/repository/heima-release/</url></repository><snapshotRepository><!--      根据这个名称去我们本地仓库中找 对应的账户和密码      --><id>heima-snapshots</id><!--        仓库要上传的路径    --><url>http://localhost:8081/repository/heima-snapshots/</url></snapshotRepository></distributionManagement>

在这里插入图片描述

  • 发布资源到私服命令
mvn deploy

在这里插入图片描述

相关文章:

128.【Maven】

Maven仓库 (一)、Maven 简介1.传统项目管理的缺点2.Maven是什么3.Maven的作用 (二)、Maven 的下载与安装1.下载与认识目录2.配置Maven的全局环境 (三)、Maven 的基础概念1.Maven 仓库(1).仓库分类 2. Maven 坐标3.Maven 本地仓库配置(1).改变默认的仓库地址(2).改变远程仓库地址…...

嵌入式虚拟仿真实验教学平台之串口发送数据

嵌入式虚拟仿真实验教学平台课程系列 串口发送数据实验 课程内容 本实验使用 STM32 的串口发送数据。开始仿真后,打开串口监视器&#xff0c;串口监视器会打印出要发送的数据。 课程目标 学习配置使用GPIO功能学习配置使用复用功能学习配置使用UART功能 硬件设计 本课程…...

Android Studio 屏幕适配

Android开发屏幕适配流程 首先studio中没有ScreenMatch这个插件的&#xff0c;下去现在这个插件 点击File->settings->Plugins->(搜索ScreenMatch插件)&#xff0c;点击下载&#xff0c;应用重启Studio即可&#xff0c;如下图 在values下 创建dimens.xml&#xff0c…...

【C++】C++11--- 线程库及详解lock_guard与unique_lock

目录 一、thread类的介绍二、线程函数参数三、 原子性操作库四、lock_guard与unique_lock4.1、mutex的种类4.2 lock_guard4.3 unique_lock 一、thread类的介绍 在C11之前&#xff0c;涉及到多线程问题&#xff0c;都是和平台相关的&#xff0c;比如**windows和linux下各有自己…...

第二篇|研究数据哪里来——建筑业

数据是研究和产业发展的重要基石&#xff0c;然而无论是学者、企业还是研究机构往往都面临着“找数据难”的局面。本期将分享一些查找建筑相关的数据及资料的渠道。希望可以帮大家解决这一难题&#xff0c;有用求收藏求收藏求收藏~ 1.政府机构 可以查找国家、地方政府的建筑行…...

numpy ascontiguousarra 学习笔记

目录 numpy ascontiguousarra函数 转换命令&#xff1a; ascontiguousarray等价效果&#xff1a; ascontiguousarray学习笔记 ascontiguousarray函数将一个内存不连续存储的数组转换为内存连续存储的数组&#xff0c;使得运行速度更快。 在昇腾开发版上使用时&#xff0c;…...

【算法|双指针系列No.1】leetcode283. 移动零

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…...

PHP8定义字符串的方法-PHP8知识详解

字符串&#xff0c;顾名思义&#xff0c;就是将一堆字符串联在一起。字符串简单的定义方法是使用英文单引号&#xff08; &#xff09;或英文双引号&#xff08;" "&#xff09;包含字符。另外&#xff0c;还可以使用定界符定义字符串。本文还介绍了字符串的连接符。…...

分享21年电赛F题-智能送药小车-做题记录以及经验分享

这里写目录标题 前言一、赛题分析1、车型选择2、巡线1、OpenMv循迹2、灰度循迹 3、装载药品4、识别数字5、LED指示6、双车通信7、转向方案1、开环转向2、位置环速度环闭环串级转向3、MPU6050转向 二、调试经验分享1、循迹2、识别数字3、转向4、双车通信5、逻辑处理6、心态问题 …...

字符串统计-C语言/Java

描述 计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 &#xff0c;包括 0 和 127 )&#xff0c;换行表示结束符&#xff0c;不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次。数据范围&#xff1a; 1≤n≤500 例如&#xff0c;对于字符串 ab…...

Styled-components,另一种css in js的方案

介绍 Styled-components是一种流行的CSS-in-JS库&#xff0c;它为React和React Native应用程序提供了一种优雅的方式来管理组件的样式。它的设计理念是将CSS样式与组件逻辑紧密绑定在一起&#xff0c;从而使样式在组件层级中作用更加清晰和可维护 使用 安装Styled-components…...

nginx部署以及反向代理多域名实现HTTPS访问

nginx部署以及反向代理多域名实现 1.nginx部署 1.1 编写nginx部署文件 docker-compose.yml version: 3 services: nginx:restart: always image: nginx:1.20container_name: nginx-mainports:- 80:80- 443:443volumes: # 基础配置- /opt/nginx_main/nginx-info/nginx.conf:/…...

24届近5年东华大学自动化考研院校分析

今天给大家带来的是东华大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、东华大学 学校简介 东华大学&#xff08;Donghua University&#xff09;&#xff0c;地处上海市&#xff0c;是教育部直属全国重点大学&#xff0c;国家“双一流”、“211工程”建设高校…...

nacos伪集群启动成功,但是服务注册不上的问题

项目场景&#xff1a; nacos 伪集群启动成功&#xff0c;但是服务未注册上的问题&#xff1a; 问题描述 在学习nacos中&#xff0c;我买了一台阿里云服务器&#xff0c;在其上部署了nginx及三个nacos 端口分别是 8848 8868 8888 我按照正常的流程 解压nacos修改application.p…...

tidevice+appium在windows系统实施iOS自动化

之前使用iOS手机做UI自动化都是在Mac电脑上进行的&#xff0c;但是比较麻烦&#xff0c;后来看到由阿里开源的tidevice工具可以实现在windows上启动WDA&#xff0c;就准备试一下&#xff0c;记录一下过程。 tidevice的具体介绍可以参考一下这篇文章&#xff1a;tidevice 开源&…...

面试热题(LRU缓存)

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回 -1 …...

微信小程序开发【从0到1~入门篇】2023.08

一个小程序主体部分由三个文件组成&#xff0c;必须放在项目的根目录&#xff0c;如下&#xff1a; 文件必须作用app.js是小程序逻辑app.json是小程序公告配置app.wxss否小程序公告样式表 3. 小程序项目结构 一个小程序页面由四个文件组成&#xff0c;分别是&#xff1a; 文…...

P1398 [NOI2013] 书法家

题目描述 输入 #1 3 13 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 输出 #1 24 输入 #2 3 13 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1…...

【构建卷积神经网络】

构建卷积神经网络 卷积网络中的输入和层与传统神经网络有些区别&#xff0c;需重新设计&#xff0c;训练模块基本一致 全连接层&#xff1a;batch784&#xff0c;各个像素点之间都是没有联系的。 卷积层&#xff1a;batch12828&#xff0c;各个像素点之间是有联系的。 impor…...

SSH 认证原理

SSH协议登录服务器&#xff1a; $ ssh userhost 主要有两种登录方式&#xff1a;第一种为密码口令登录&#xff0c;第二种为公钥登录 密码口令登录 通过密码进行登录&#xff0c;主要流程为&#xff1a; 1、客户端连接上服务器之后&#xff0c;服务器把自己的公钥传给客户端…...

基于DETR (DEtection TRansformer)开发构建MSTAR雷达影像目标检测系统

关于DETR相关的实践在之前的文章中很详细地介绍过&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《DETR (DEtection TRansformer)基于自建数据集开发构建目标检测模型超详细教程》 《书接上文——DETR评估可视化》 基于MSTAR雷达影像数据开发构建目标检测系统&am…...

Java分布式微服务1——注册中心(Eureka/Nacos)

文章目录 基础知识注册中心Eureka注册中心与Ribbon负载均衡1、Eureka注册中心2、Eureka的搭建3、Eureka服务注册4、复制服务实例5、拉取服务6、Ribbon负载均衡的流程及Eureka规则调整&#xff1a;7、Ribbon负载均衡饥饿加载 Nacos注册中心1、服务端Nacos安装与启动2、客户端Nac…...

(文章复现)建筑集成光储系统规划运行综合优化方法matlab代码

参考文献&#xff1a; [1]陈柯蒙,肖曦,田培根等.一种建筑集成光储系统规划运行综合优化方法[J].中国电机工程学报,2023,43(13):5001-5012. 1.基本原理 本文建立的双层耦合模型内、外层分别对应求解容量配置与能量调度问题。外层模型设置光伏与储能容量备选集并将容量配置组合…...

【Redis】——RDB快照

Redis 是内存数据库&#xff0c;但是它为数据的持久化提供了两个技术&#xff0c;一个是AOF日志&#xff0c;另一个是RDB快照&#xff1a; AOF 文件的内容是操作命令&#xff1b;RDB 文件的内容是二进制数据。 RDB 快照就是记录某一个瞬间的内存数据&#xff0c;记录的是实际…...

微服务监控技术skywalking的部署与使用(亲测无坑)

微服务监控技术skywalking的部署与使用 1. 前期准备2. skywalking安装部署2.1 Java Agent2.2 apache/skywalking-oap-server2.3 apache/skywalking-ui 3. 项目启动4.效果展示 1. 前期准备 注&#xff1a;本篇文章采用docker部署&#xff0c;采用8.2.0版本&#xff0c;版本一定…...

DLA 神经网络的极限训练方法:gradient checkpointing

gradient checkpointing 一般来说&#xff0c;训练的过程需要保存中间结果&#xff08;不管是GPU还是CPU&#xff09;。前向传播根据输入(bottom_data)计算输出(top_data)&#xff0c;后向传播由top_diff计算bottom_diff&#xff08;如果某个变量打开梯度进行训练的话&#xff…...

python excel 操作

excel文件内容如下&#xff1a; 一、xlrd 读Excel 操作 1、打开Excel文件读取数据 filexlrd.open_workbook(filename)#文件名以及路径&#xff0c;如果路径或者文件名有中文给前面加一个 r 2、常用函数 &#xff08;1&#xff09;获取一个sheet工作表 table file.sheets(…...

记一次Linux启动Mysql异常解决

文章目录 第一步&#xff1a; netstat -ntlp 查看端口情况2、启动Mysql3、查看MySQL日志 tail -100f /var/log/mysqld.log4、查看磁盘占用情况&#xff1a;df -h5、思路小结 第一步&#xff1a; netstat -ntlp 查看端口情况 并没有发现3306数据库端口 2、启动Mysql service …...

ATFX汇市:美联储年内或仍将加息依次,美指向下空间不大

环球汇市行情摘要—— 昨日&#xff0c;美元指数上涨0.08%&#xff0c;收盘在102.08点&#xff0c; 欧元贬值0.07%&#xff0c;收盘价1.1003点&#xff1b; 日元贬值0.51%&#xff0c;收盘价142.47点&#xff1b; 英镑升值0.28%&#xff0c;收盘价1.2784点&#xff1b; 瑞…...

【博客687】k8s informer的list-watch机制剖析

k8s informer的list-watch机制剖析 1、list-watch场景&#xff1a; client-go中的reflector模块首先会list apiserver获取某个资源的全量信息&#xff0c;然后根据list到的rv来watch资源的增量信息。希望使用client-go编写的控制器组件在与apiserver发生连接异常时&#xff0c…...