【JAVAEE基础学习(13)】--简述maven

发布于:2023-01-10 ⋅ 阅读:(133) ⋅ 点赞:(0)

一、基础知识:
    1.定义:
        Maven 是一个项目管理工具,它包含了:
            一个项目对象模型 (POM:Project Object Model),
            一组标准集合,
            一个项目生命周期(Project Lifecycle),
            一个依赖管理系统(Dependency Management System),
            用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑

    2.作用:
        1.依赖管理----{meavn工程对第三方jar包管理过程}
        2.项目构建----{源代码的编译,web工程的部署等}

    3.meavn的下载与安装
        1.下载:到meavn官网进行meavn的下载:http://archive.apache.org/dist/maven/maven-3/
        2.安装:将下载好的压缩包解压到指定文件夹就行

    4.meavn的主要目录结构{
        bin{mvn目录(构建项目)}
        boot{maven自身运行所需要的类加载器}
        conf{settings.xml(主要使用的配置文件)}
        lib{meavn自身运行所依赖的jar包,包含tomcat插件}
    }

    5.maven环境变量配置
        在系统环境变量中添加{
            键1:MAVEN_HOME
            值1:maven的路径

            在path环境变量中添加:%MAVEN_HOME%\bin
        }
        测试maven是否配置成功:
            在cmd下输入:
                mvn -v


    6.maven仓库的种类以及各种仓库之间的关系
        maven仓库用于存储各类开源jar包。仓库的分类如下:
            本地仓库->远程仓库【私服】->镜像->中央仓库

    tip1:整个项目的组成部分{
        核心代码;配置文件
        测试代码;测试配置文件
    }

    7.maven项目标准目录结构{
        src/main/java目录:核心代码部分
        src/main/resouces:配置文件部分
        src/test/java:测试代码部分
        src/test/resources:测试配置文件
        src/main/webapp:页面资源:js、css和html
    }

    8.maven中的构建命令与生命周期{
        1、清除编译信息(清理生命周期,是独立生命周期):
            删除以前的编译结果,为重新编译做好准备
                mvn clean:删除target目录,即删除项目中含有差异的编译代码
        2、执行编译(2-6这个整体是一套生命周期,为默认生命周期):
            将java源程序编译为字节码文件
                mvn compile:将src/main目录下的所有java代码进行编译
        3、测试:
            针对项目中关键点进行测试,确保项目在迭代开发过程中关键点的正确性
                mvn test:编译src/目录下所有java代码
        (报告:每次测试后以标准格式记录和展示测试结果)
        4、打包:
            将一个包含诸多文件的工程封装为一个压缩包用于安装或部署,Java工程对应jar包,web工程对应war包
                mvn package:编译src/目录下所有java代码并且将项目进行打包
        5、安装:
            在Maven环境下特指打包的结果jar包或war包安装到本地仓库中
                mvn install:编译src/目录下所有java代码并且将项目进行打包,并且将打包项目上传到了本地仓库
        6、发布:
            将打包的结果部署到远程仓库或将war包部署到服务器上运行
                mvn deploy
        注:在maven中还有一套站点生命周期,在开发中不常用
    }

    9.maven概念模型图{
        POM(项目对象模型)->pom.xml->包含信息{
            项目自身信息封装为便于管理的对象;
            项目运行所依赖的jar包信息;
            运行环境信息(如jdk,tomcat信息)
        }
        依赖管理模型(由POM的项目运行所依赖的jar包信息独立出来的)->{
            存放jar包坐标
            jar包坐标实例

<dependency>
    <groupId>mysql</groupId>-----公司/组织名称
    <artifactId>mysql-connector-java</artifactId>----项目名称
    <version>5.1.47</version>----版本号
</dependency>

        }
        构建生命周期{一键构建}{
            默认生命周期{
                compile;test;package;install;deploy
                每一个构建项目的命令都对应了maven底层一个插件
            }
        }
        POM文件内容概述{
            POM主体

<!--  xml声明-->
<?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>

    <!--  
        坐标{用于寻找jar包}:用于生成路径:g+a+v/a-v.jar
        即:组织id+模块id+版本号/模块id-版本号.jar
        则从仓库中按照{组织id/模块id/版本号/模块id-版本号.jar}这个路径进行jar包寻找
    -->
    <groupId>组织id</groupId>
    <artifactId>模块id</artifactId>
    <version>版本号</version>

    <!--  项目名称-->
    <name>WmavenDay01</name>

    <!--  依赖的包-->
    <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <!--  包的使用范围-->
          <scope>test</scope>
        </dependency>
    </dependencies>

</project>

        }
    }

    10.依赖管理{
        依赖:
            当A.jar需要用到B.jar中的类时,就称A对B有依赖。jar包中的依赖存在直接依赖和间接依赖
            当maven工程添加了对某个jar包的依赖后,可以将此依赖的范围限制在{
                compile{用于编译(src)、测试(test)和部署(jar包要随项目放到服务器中)}
                test{用于测试(test)}
                provided{用于编译(src)和测试(test)}
                runtime{用于测试(test)和部署(jar包要随项目放到服务器中)}
            }
        依赖传递性:
            A->B,B->C => A-(间接)->C 则C中只有compile范围的依赖对A可见。
            依赖原则(解决jar包冲突):最短路径者优先;路径相同时先声明者优先
            依赖排除

<exclusions>
    <exclusion>
        排除的jar包的g和a向量
    </exclusion>
</exclusions>

        利用<properties>和自定义标签{定义框架的版本号,可以通过${}SpringEL表达式语言来获取这个标签值}来同一框架版本号。
    }

二、将maven插件集成到idea中
    1、检查个人电脑内的maven是否安装与配置:
        cmd下输入:mvn -v

    2、在idea设置中的"构建,执行,部署"部分选择maven,然后在maven home导向中输入安装好的maven路径,指定maven的settings.xml文件的路径

    3、在idea设置中的"构建,执行,部署"部分maven下,选择Runner,在VM Options中输入:
        -DarchetypeCatalog=internal
    用于防止在没有网络情况下无法在本地找到相关可替代的jar包


网站公告

今日签到

点亮在社区的每一天
去签到