• Maven概述


    Maven是什么

    Maven是一个Apache公司的开源项目,是项目构建工具。用来管理项目。

    1. Maven的好处

    使用maven可以在项目中不用导入项目依赖的jar包,省去了下载和导入jar包的过程,使项目的大小得
    到了缩减。

    1. Maven的两大核心

    (1) 依赖管理:对项目需要使用到的jar包进行管理。
    (2) 项目构建:项目在编码完成后,对项目进行编译、测试、打包、部署。

    Maven仓库

    Maven通过一个仓库来存放jar包,在Maven项目中,不再需要导入这些jar包,只需要告诉项目所依赖
    的jar包的坐标,Maven就会自己将我们项目所需要的jar包给我们依赖进来。在maven中仓库有三种:
    (1)本地仓库:本地仓库就在自己的机器上,我们可以在自己的机器上创建一个maven仓库,然后就
    需要的jar包导入进去,就可以在项目中引用。
    (2)中央仓库:中央仓库是最大的一个仓库,由Apache组织来负责维护,几乎包括了现在所有的jar包
    (有一些涉及版权问题没有,比如:oracle数据库的连接jar包),但是中央仓库的访问速度非常慢。
    (3)私服仓库:私服仓库在公司局域网内,公司可以在自己的局域网内创建一个仓库,将项目所需要
    的jar包存放在此仓库中,这样整个项目组就都可以使用此仓库提供的jar包,不再需要在自己本地创建仓
    库来保存jar包。

    Maven如何在仓库中查找包
    Maven在仓库中查找jar包需要使用到jar的“坐标”信息:
    公司名称groupId+项目名称artifactId +版本信息version

    pom.xml

    项目对象模型(Project Object Model)

    <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
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- 基本设置 The Basics -->
    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <version>...</version>
    <packaging>...</packaging>
    <dependencies>...</dependencies>
    
    
    <parent>...</parent>
    <dependencyManagement>...</dependencyManagement>
    <modules>...</modules>
    <properties>...</properties>
    <!-- 构建过程的设置 Build Settings -->
    <build>...</build>
    <reporting>...</reporting>
    <!-- 项目信息设置 More Project Information -->
    <name>...</name>
    <description>...</description>
    <url>...</url>
    <inceptionYear>...</inceptionYear>
    <licenses>...</licenses>
    <organization>...</organization>
    <developers>...</developers>
    <contributors>...</contributors>
    <!-- 环境设置 Environment Settings -->
    <issueManagement>...</issueManagement>
    <ciManagement>...</ciManagement>
    <mailingLists>...</mailingLists>
    <scm>...</scm>
    <prerequisites>...</prerequisites>
    <repositories>...</repositories>
    <pluginRepositories>...</pluginRepositories>
    <distributionManagement>...</distributionManagement>
    <profiles>...</profiles>
    </project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    Maven安装

    1. 解压Maven
    2. 创建本地仓库

    在这里插入图片描述
    创建repository本地仓库。

    1. 修改配置文件settings.xml
    <localRepository>D:/masterSpring/repository</localRepository><!--改为自定义仓库的目录-->
    
    • 1
    1. 修改中央仓库镜像
    <mirrors>
    <mirror>
    <id>alimaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
    
    </mirror>
    <mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
    </mirror>
    <mirror>
    <id>central</id>
    <name>Maven Repository Switchboard</name>
    <url>http://repo1.maven.org/maven2/</url>
    <mirrorOf>central</mirrorOf>
    </mirror>
    <mirror>
    <id>repo2</id>
    <mirrorOf>central</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://repo2.maven.org/maven2/</url>
    </mirror>
    <mirror>
    <id>ibiblio</id>
    <mirrorOf>central</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
    </mirror>
    <mirror>
    <id>jboss-public-repository-group</id>
    <mirrorOf>central</mirrorOf>
    <name>JBoss Public Repository Group</name>
    <url>http://repository.jboss.org/nexus/content/groups/public</url>
    </mirror>
    <mirror>
    <id>google-maven-central</id>
    <name>Google Maven Central</name>
    <url>https://maven-central.storage.googleapis.com
    </url>
    <mirrorOf>central</mirrorOf>
    </mirror>
    <!-- 中央仓库在中国的镜像 -->
    <mirror>
    <id>maven.net.cn</id>
    <name>oneof the central mirrors in china</name>
    <url>http://maven.net.cn/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
    </mirror>
    
    </mirrors>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    1. . 在Idea中配置maven

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

    Maven构建项目

    标准maven项目结构:
    在这里插入图片描述
    配置环境变量后的项目构建命令:

    在这里插入图片描述

    Maven配置远程Tomcat

    <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
        <plugins>
           
     
            <!-- Tomcat plugin-->
     
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>9000</port>   //配置Tomcat的访问端口
                    <path>/spring5-webmvc-demo</path>   //配置Web的上下文路径
                </configuration>
            </plugin>
     
        </plugins>
    </build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    依赖配置

    在这里插入图片描述

    分模块开发与设计

    在web开发中,MVC架构(表现层,数据链路层,持久层)都是在同一个模块下,有同一个或几个开发者协同开发。在企业中一个web系统是十分庞大的,一个业务系统都有若干人分模块开发。在同一个模块下就无法实现。

    Maven提供了分模块开发来满足企业开发的需求。将mvc架构分成不同的模块,通过pom实现私服的引用,这样就满足多人协同开发。

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

    以之前完全注解开的ssm项目为例:ssm完全注解开发

    • domain(pojo)的模块差分:

    文件---->项目模块------>新建

    在这里插入图片描述
    Maven------>下一步
    在这里插入图片描述
    在创建完成后删除不必要的源文件目录或资源目录。

    在这里插入图片描述

    在这里插入图片描述
    pojo模块也不需要导入任何依赖。

    在创建其他模块是会出现报错的情况,是由于pom中没到导入依赖,按需导入即可:

    在这里插入图片描述
    当公共依赖导入后,pojo的对象还是报错,就需要导入自定义的模块依赖。依赖都是jar工具包,而模块是一个个的项目,该如何操作呢?
    在这里插入图片描述
    即该如何导入pojo的自定义模块呢?在使用maven构建工具时,可以使用mvn命令操作项目,需要哪个模块的工具包,就可以使用package命令将其打包为jar包。有了工具包该如何导入依赖呢?maven的install命令可以将jar包上传到本地仓库,那么就可以先打包再上传最后使用依赖导入就可以了。

    在这里插入图片描述

    Maven生命周期知道上传命令包含了前面的任务,直接上传命令install即可。

    在这里插入图片描述
    出现了jar包,在所需的模块按依赖规范导入即可。

    在这里插入图片描述
    在所需要的pom中导入该依赖。

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

    导入自定义依赖后,POJO对象可以正常使用。

    其他模块也按此类推。

    依赖管理

    1. mvc架构的不同的层都可以分模块开发,分工合作。
    2. 各个模块在使用时必须先上传到本地仓库,才能在其他模块通过导入依赖使用。
    3. 当依赖中出现相同的资源时,层级越深优先级越低、依赖配置的位置越后有覆盖权。

    可选依赖
    可选依赖是指对外隐藏所依赖的资源:

    <dependency>
       <groupId>org.example</groupId>
        <artifactId>ssm_dao</artifactId>
        <version>1.0-SNAPSHOT</version>
        <optional>true</optional>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    依赖隐藏后将不再具有传递性。下一个引入该依赖的模块需要重新导入。

    排除依赖
    排除依赖是指主动断开依赖资源,不需要某个模块。

    <exclusions>
        <exclusion>
            <groupId></groupId>
            <artifactId></artifactId>
        </exclusion>
    </exclusions>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    聚合与继承

    在这里插入图片描述
    各个模块之间存在依赖关系,往往会有同步更新,需要一个总的pom来管理直接模块。新建parent模块,来管理其他模块。**将打包方式改为pom,通过模块属性实现管理。

    <?xml version="1.0" encoding="UTF-8"?>
    <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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
        <artifactId>ssm_parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>pom</packaging>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
    
        <!--设置管理模块名称-->
        <modules>
            <module>../ssm_config</module>
            <module>../ssm_controller</module>
            <module>../ssm_dao</module>
            <module>../ssm_pojo</module>
        </modules>
    
    
    
    </project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    继承
    在这里插入图片描述

    模块之间存在依赖关系时,当不同的模块具有相同的资源时,对每个模块都导入还要保持版本的一致很麻烦,同理版本控制也可以交由父模块管理。

    在子模块继承父模块通过parent属性:

        <parent>
            <artifactId>ssm_dao</artifactId>
            <groupId>org.example</groupId>
            <version>1.0-SNAPSHOT</version>
            <relativePath>../ssm_parent/pom.xml</relativePath>
        </parent>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    继承父模块的pom

    继承的版本控制,在继承时,凡是继承了父类的模块都在子类中出现,而有些模块是独立的不是公用的,就需要进行模块管理:

        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId></groupId>
                    <artifactId></artifactId>
                    <version></version>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    继承的具体·步骤:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    属性管理

    在每个依赖中都需要要导入版本,像spring的全家桶,版本都是一样的,如何需要修改的话每个都要改,pom提供了properties属性来进行批量版本控制。

        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
    
            
            <!--自定义spring版本-->
            <spring.version>5.1.19.RELEASE</spring.version>
            
        </properties>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    版本管理:

    在这里插入图片描述

    测试

    在这里插入图片描述

  • 相关阅读:
    c++中多态调用场景下基类析构函数的virtual声明
    设计模式-代理模式
    Mybatis对数据加密解密(AES加解密)操作
    铨顺宏RFID:车辆运输管理途中怎么监控?RFID智能称重系统有用吗
    数据迁移一致性测试探索与实践
    MYSQL 主从复制与读写分离
    预测股票涨跌看什么指标,如何预测明天股票走势
    【数据结构和算法】-贪心算法
    「Daily OI Round 4」Snow(贪心+模拟)
    查找有序数组的某元素的索引
  • 原文地址:https://blog.csdn.net/xwh3165037789/article/details/125545618