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


    一、基础知识:
        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包坐标实例

    1. <dependency>
    2. <groupId>mysqlgroupId>-----公司/组织名称
    3. <artifactId>mysql-connector-javaartifactId>----项目名称
    4. <version>5.1.47version>----版本号
    5. dependency>

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

    1. "1.0" encoding="UTF-8"?>
    2. <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">
    3. <modelVersion>4.0.0modelVersion>
    4. <groupId>组织idgroupId>
    5. <artifactId>模块idartifactId>
    6. <version>版本号version>
    7. <name>WmavenDay01name>
    8. <dependencies>
    9. <dependency>
    10. <groupId>junitgroupId>
    11. <artifactId>junitartifactId>
    12. <version>4.11version>
    13. <scope>testscope>
    14. dependency>
    15. dependencies>
    16. 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包冲突):最短路径者优先;路径相同时先声明者优先
                依赖排除

    1. <exclusions>
    2. <exclusion>
    3. 排除的jar包的g和a向量
    4. exclusion>
    5. exclusions>

            利用和自定义标签{定义框架的版本号,可以通过${}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包

    三、常用小工具

     一、关于maven中资源无法加载的解决办法之一:

    在pom中添加

    1. <build>
    2. <plugins>
    3. <plugin>
    4. <groupId>org.springframework.bootgroupId>
    5. <artifactId>spring-boot-maven-pluginartifactId>
    6. plugin>
    7. plugins>
    8. <resources>
    9. <resource>
    10. <directory>src/main/javadirectory>
    11. <includes>
    12. <include>**/*.ymlinclude>
    13. <include>**/*.propertiesinclude>
    14. <include>**/*.xmlinclude>
    15. includes>
    16. <filtering>falsefiltering>
    17. resource>
    18. <resource>
    19. <directory>src/main/resourcesdirectory>
    20. <includes>
    21. <include>**/*.ymlinclude>
    22. <include>**/*.propertiesinclude>
    23. <include>**/*.xmlinclude>
    24. includes>
    25. <filtering>falsefiltering>
    26. resource>
    27. <resource>
    28. <directory>libdirectory>
    29. <includes>
    30. <include>**/*.jarinclude>
    31. includes>
    32. resource>
    33. resources>
    34. build>

  • 相关阅读:
    3D建模基础教程:编辑样条线【子层级】
    lua数据打印
    QoS服务质量六拥塞管理原理
    [附源码]计算机毕业设计学生在线考试系统Springboot程序
    (完全解决)pycharm运行或者调试项目的时候报错:test setup failed
    华为云云耀云服务器L实例评测|使用clickhouse-benchmark工具对ClickHouse的性能测试
    python----23-集合
    Redis 非关系型数据库学习(一) ---- Redis 的安装
    Vue 3.0 中重置 reactive 定义的响应式对象数据,恢复为初始值
    【代码学习】pytorch_lightning
  • 原文地址:https://blog.csdn.net/qq_55865959/article/details/126444752