6.Maven

102 阅读5分钟

前序

  1. 分模块开发的意义

图片.png

将一个项目中的若干模块,拆分出来,成为一个单独的模块。

图片.png

将domain模块从项目中拆分了出来

  1. 拆分后,在主项目中,通过坐标依赖,导入子模块(坐标在子模块的pom.xml中,复制过来)
<depency>
    <groudId>com.itheima</groupId>
    <artifactId>maven_03_pojo</artifactId>
    <version>1.0-SNAPSHOT</version>
</depency>
  1. 把domain拆分的子模块打包进仓库 这样pom.xml中为什么可以直接使用坐标就是对的?因为在maven本地仓库中,帮我们安装了,所以后续直接导入坐标就可以使用。

所以在本地仓库中,需要有我domain中的资源坐标。

双击进行打包

图片.png

  1. 然后就可以在主项目中随便使用子模块的数据,不报错。

图片.png

  1. 注意:有的子模块又依赖其他的子模块,需要将其他的子模块的坐标导入进来!!!

依赖传递

图片.png

图片.png

这些就被称为是:依赖;
我们发现有的依赖有箭头,有的没有箭头;有箭头的表示:这个依赖又同时依赖了其他的依赖;

图片.png

直接依赖:我这个依赖用到了其他的依赖,而其他的依赖又用了其他的依赖,这个时候,我的依赖就是【直接依赖(pom.xml中直接使用的)】:可以把他们全部使用

间接依赖:其实我不直接用它,我用多个间接依赖合成的【直接依赖】

图片.png

谁的度小,谁的优先级 就高;
谁的配置顺序在前面,谁就更优先;

通过这个按钮,可以查看具体的依赖关系

图片.png

图片.png

可选依赖和排除依赖

防止依赖有冲突问题,我就想把某些特殊的依赖进行【隐藏】也就是可选依赖

知道即可

图片.png

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

通过<exclusions>来排除依赖,里面写上坐标就行

图片.png

图片.png

如果你用别人的东西,那么一定是排除依赖
如果你的东西被别人用,那么一定是可选依赖;

聚合

图片.png

默认打包方式:jar
web工程打包方式:war
聚合工程的打包方式:pom

  1. 设置打包方式 图片.png

  2. 设置管理的模块名称 两个点:.. :表示上一次目录结构;
    一个点: . :表示当前目录结构;

图片.png

<modules>
    <module>../maven_02_ssm</module>
    <module>../maven_03_pojo</module>
    <module>../maven_04_dao</module>
</modules>

以上是:设置当前工程,维护管理的模块,到底有几个

图片.png

  1. 在maven中通过compile来运行。

图片.png

就算我的module管理的顺序不一样,但是输出还是一样的。
因为他是通过依赖的关系顺序 来判断谁先执行的。
先把没有依赖的构建,然后再构建有依赖的。

继承

将相同的依赖,进行继承、简化操作。

图片.png

  1. 聚合和继承通常在一起,继承关系在子类中描述 pom.xml02
<parent>
    //父类的坐标
    <groupId></groupId>
    <artifactId>maven_01_parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    //还需要通过一个标签,来快速找到继承的资源
    <relativePath>../maven_01_parent/pom.xml</relativePath>
</parent>
  1. 父工程配置 子工程中用到的依赖

图片.png

  1. 依赖管理(不强制子工程继承的东西)
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

如果我想用,需要指定使用(pom2.xml)

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

只需要提供群组id和项目id,不需要提供版本,版本由父工程统一提供,避免版本冲突;子工程还可以定义父工程中没有定义的依赖关系。

图片.png

聚合与继承的区别

聚合:在父工程中配置
继承:在子工程中配置

图片.png

属性

定义属性
<properties>
    <spring.version>5.1.9.RELEASE</spring.version>
</properties>

再次使用的时候:

Snipaste_2022-05-10_16-34-19.png

只需要在定义属性的地方,进行版本的修改,就可以了。大大地减少了耦合性。

可以定义的属性非常的多:

Snipaste_2022-05-10_16-34-19.png

配置文件加载属性

  1. 在pom.xml中配置jdbc.properties中的数据

图片.png

如果直接在pom.xml中设置,只能在pom.xml中用,不能再配置文件中用。

  1. 需要扩大范围(jdbc.properties在pom2.xml,pom2.xml中的jdbc需要用到简写形式,所以这里directory要写到pom2的地址)

图片.png

<directory>资源文件是什么</directory>
<filtering>开启过滤规则true</filtering>
  1. install一下

补充

如果有多个jdbc.properties也想要用这种简写的方式怎么办呢? 而且directory标签只能写一次
改进:${project.basedir}:代表当前所在的目录,因为子项目继承了父项目,所以子项目也在当前所在目录。

图片.png

当我们打包方式为:war(web项目)的时候,没有web.xml是会报错的。

需要通过插件来解决

图片.png

Maven内置属性

图片.png

版本管理

图片.png

多环境配置与应用

不同的环境配置,需要有不同的地址。

图片.png

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

  1. 第一种方式

图片.png

然后再install

  1. 第二种方式【更常用】 直接通过命令来选择哪一个环境。

图片.png

这个是执行mvn指令

-P代表:指定环境,后面代表环境id mvn install -P env_test

图片.png

跳过测试

图片.png

  1. 点击闪电按钮,然后再install运行,就会直接跳过测试

图片.png

  1. 指定跳过某些测试 测试是一个插件,我们只能在插件上进行修改操作

图片.png

本质上是需要测试(skitTests是否跳过=false:不跳过=需要测试),然后通过排除需要测试的类

图片.png

  1. 指令 mvn package -D skipTests跳过测试

私服

什么是私服

如果不在一台电脑,怎么把模块共享出去?难道是u盘吗?那肯定不是!

图片.png

图片.png