SSM-Maven

本文最后更新于:5 个月前

SSM框架 - Maven

Maven

分模块开发与设计

分模块开发意义

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

分模块开发设计案例

创建全新的模块

next

父项:None,修改模块路径,至项目模块外

完成

完善目录结构

完成工具/模块类

在项目模块pom添加工具类pom配置

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.2.10.RELEASE</version>
</dependency>

重新加载项目Maven

(查看缺失补充import)

  • 处理Maven报错

报错信息

Failed to execute goal on project ssm_worktogether_demo: 
Could not resolve dependencies for project org.example:ssm_worktogether_demo:war:1.0-SNAPSHOT: 
Could not find artifact org.example:maven_pojo:jar:1.0-SNAPSHOT -> [Help 1]

查看Maven本地仓

${UserName}/.m2/repository

工具类Maven - install 安装到本地仓库

项目 - compile - BuildSuccess

依赖管理

依赖具有传递性

直接依赖:在当前项目中通过依赖配置建立的依赖关系

间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源

依赖冲突

版本不同

同一个坐标写了多次,最后配置的版本生效

  • 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高

  • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的

  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

Maven - Dependencies - 查看依赖

Maven - Show Dependcies - 查看依赖结构

可选依赖

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


隐藏当前工程所依赖的资源,隐藏后对用资源不具有依赖传递性

隐藏自己的依赖

引用当前模块后,不会出现此依赖

<dependency>
  <groupId>org.example</groupId>
  <artifactId>maven_pojo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <optional>true</optional>
</dependency>

排除依赖

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


当前引用坐标中,将部分依赖排除

排除依赖是隐藏当前资源对应的依赖关系

引用第三方模块,无法对其pom进行修改

使用排除依赖,在自己项目pom中,对其依赖进行隐藏,避免依赖冲突产生的影响

<dependency>
  <groupId>org.example</groupId>
  <artifactId>maven_pojo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <exclusions>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
  </exclusions>
</dependency>

聚合

聚合:

将多个模块组织成一个整体,同时进行项目构建的过程称为聚合

聚合工程:

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

作用:

使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建

当工程中某个模块发生更新〈变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题

创建步骤

创建新模块

改变打包方式

<packaing>pom</packaing>

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

<modules>
    <module>../maven_demo2</module>
    <module>../maven_demo3</module>
    <module>../maven_demo4</module>
<modules>

不存在先后关系,总是先创建没有依赖的模块

聚合工程中所包含的模块在进行构建时会根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关

参与聚合的工程无法向上感知是否参与聚合,只能向下配置哪些模块参与本工程的聚合

继承

继承:

继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承

作用:
简化配置
减少版本冲突

配置当前工程继承自parent工程

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

将子工程的共有依赖复制到父工程

保留子工程独用依赖

修改父工程的依赖版本配置,子工程全部修改

定义依赖管理

(不是直接发给每个子工程同步使用,需要子工程pom声明)

<dependencyManagement>    
    <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
          <scope>test</scope>
    </dependency>
</dependencyManagement>

子工程pom声明

(不能添加version,版本使用父工程所声明的版本)

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

流程分析

聚合与继承的区别

属性

修改版本,手动修改,漏改

设置属性,修改属性,统一修改

定义属性

<properties>
    <spring_version>5.2.10.RELEASE</spring_version>
  </properties>

使用属性

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>${spring_version}</version>
</dependency>

配置文件加载属性

pom.xml

<properties>
    <jdbc.username>root</jdbc.username>
  </properties>

jdbc.properties

jdbc.username=${jdbc.username}

pom.xml

配置关联/开启资源文件目录加载属性的过滤器

<build>
    <resources>
          <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <filtering>true</filtering>
          </resource>
    </resources>
  </build>

war打包需要web.xml文件 – 直接在WEB-INF中创建空的web.xml

其他属性

版本管理

多环境配置与应用

maven提供配置多种环境的设定,帮助开发者使用过程中快速切换环境

多环境开发

分组,起名

跳过测试

  • 闪电符号
  • 命令
  • 细粒度控制

私服

简介与安装

https://www.bilibili.com/video/BV1Fi4y1S7ix?p=86

私服仓库分类

https://www.bilibili.com/video/BV1Fi4y1S7ix?p=87

本地仓库访问私服配置

https://www.bilibili.com/video/BV1Fi4y1S7ix?p=88

私服资源上传与下载

https://www.bilibili.com/video/BV1Fi4y1S7ix?p=89


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!