java-Maven-01

1.概念与安装:

        Maven是服务于java平台的自动化构建工具

1.1发展历程:

        发展历程:Make->Ant->Maven->Gradle

1.2构建过程中的各个环节:

        1 清理:将以前编译得到的旧的class字节码文件删除,为下一次编译做准备

        2 编译:将java源程序编程成class字节码文件

        3测试:自动测试,自动调用junit程序

        4报告:测试程序执行的结果

        5打包:动态web工程打war包,java工程打jar包

        6安装:Maven特定的概念------将打包得到的文件复制到”仓库“中的指定位置

        7部署:将动态web工程生成的war包复制到servlet容器的指定目录下,使其可以运行

1.3安装Maven核心程序:

        1 配置JAVA_HOME环境变量 (maven就是用java写的,因此JAVA_HOME必须要配置)

        2 配置MAVEN_HOME环境变量    D:\apache-maven-3.6.1

        3 配置Path    %MAVEN_HOME%\bin\

1.4成功安装:mvn -v

java-Maven-01_第1张图片

1.5联网问题:

        Maven的核心程序仅仅定义了抽象的生命周期,但是具体的工作必须要有特定的插件去完成。而插件本身并不在Maven的核心程序范围内。我们执行的maven命令如果用到某些插件,则先会在本地仓库查找,如果本地仓库查找失败,则会联网下载。如果下载失败则构建失败(ps:跟composer ,npm一个样 --_--! )

2.Maven的核心概念:

2.1约定的目录结构:

java-Maven-01_第2张图片

2.2为什么要遵守约定的目录结构?

        Maven负责我们项目的自动化构建,以编译为例,Maven要自动进行编译,那么它必须知道java源文件保存在哪里。如果我们自己自定义的东西想要让框架或者工具知道,有两种方法:

        (1) 以配置的方式明确告诉框架

        (2) 遵守框架内部已经存在的约定

        所以:约定 > 配置 > 编码

2.3常用的maven命令:(需在pom所在目录下运行)

        mvn clean:清理

        mvn compile:编译主程序

        mvn test-comlile编译测试程序

        mvn test 执行测试

        mvn package:打包

2.4POM:

        Project  Object  Model:项目对象模型,maven的核心配置文件

        POM 中可以指定以下配置:(后面细讲)

            项目依赖,插件,执行目标,项目构建 profile,项目版本,项目开发者列表,相关邮件列表信息

2.5坐标:

        1.使用下面三个向量在仓库中唯一定位一个Maven工程

            [1] groupid:公司或组织域名倒序+项目名

            com.xxx.maveName

            [2] artifactid:模块名

            hello

            [3] version:版本

            1.0.0

        2.Maven工程的坐标与仓库中路径的对应关系:

java-Maven-01_第3张图片

2.6仓库:

        1.仓库的位置:

            打开 config/settings.xml 寻找 localRepository,默认值:用户名/.m2/repository

        2.仓库的分类:

                本地仓库:当前电脑上部署的仓库目录,为当前电脑上所有的Maven工程服务

                远程仓库:

                      (1)局域网:搭建在局域网中,为局域网内所有的Maven工程服务

                      (2)中央仓库:架设在Internet上

                      (3)中央仓库镜像:分担中央仓库的流量

        3.仓库中保存的内容:

            Maven自身所需要的插件

            第三方框架或工具的jar包

            我们自己开发的Maven工程

你可能感兴趣的:(java-Maven-01)