Maven简介及其主要概念

Maven简介

Maven是什么?

1.Maven是Apache软件基金会组织维护的一款自动化构建工具,专注服务于平台的项目构建和依赖管理。
2.构建:就是以我们编写的代码、框架配置文件、国际化。
优点:

优点一:项目非常大时,可借助Maven将一个项目拆分成多个工程,最好是一个模块对应一个工程,利于分工协作。而且模块之间还是可以发送消息的。
优点二:借助Maven,可将jar包仅仅保存在“仓库”中,有需要该文件时,就引用该文件接口,不需要复制文件过来占用空间。
优点三:借助Maven可以以规范的方式下载jar包,因为所有的知名框架或第三方工具的jar包已经按照统一的规范存放到了Maven的中央仓库中。
优点四:Maven会自动将你要加入到项目中的jar包导入,不仅导入,而且还会将该jar包所依赖的jar包都自动导入进来。而且是导入该包的最新版本

构建的过程中的环节

Maven可以自动从构建过程的起点一直执行到终点。

1:清理:删除以前的编译结果,为重新编译做准备
2:编译:将java源程序编译为字节码的文件
3:测试:针对项目中的关键点进行测试,确保项目在迭代开发中关键点的正确性。
4:报告:将每一次测试后以标准的格式化记录和展示测试的结果
5:打包:讲一个包含结构文件的额工程封装为一个压缩文件,用于安装或者部署,java工程对应jar包、web工程对应war包。
6:安装:在Maven环境下特指将打包的结果–jar包或者war包安装到本地的仓库中。
7:部署:将打包的结果部署到远程仓库或者war包部署到服务器上运行。

Maven的核心概念

  • 1.约定的结构目录
  • 2.POM(终点)
  • 3.坐标
  • 4.依赖
  • 5.仓库
  • 6.生命周期/插件/目标
  • 7.继承
  • 8.聚合

约定的结构目录

在这里插入图片描述

    [1] 根目录:工程名
    [2] |---src:源码
    [3] |---|---main:存放主程序
    [4] |---|---|---java:java源码文件
    [5] |---|---|---resource:存放框架的配置文件
    [6] |---|---test:存放测试程序
    [7] |---pop.xml:maven的核心配置文件
  • 根目录:工程名
  • src目录:源码
  • pom.xml文件: Maven工程的核心配置文件
  • main目录:存放主程序
  • test目录: 存放测试程序
  • java目录: 存放java源文件
  • resources目录: 存放框架或其他工具的配置文件

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

  • Maven要负责项目的自动化构建,以编译为例,Maven要想自动进行编译,那么它必须知道java源文件保存在哪里。

常用的Maven命令

#清理生命周期: clean  (把所有生成的东西都删除)
mvn clean:#清理

mvn compile:#编译主程序
#执行mvn compile, 结果是在项目的根目录下生成target目录(结果目录),
#maven编译的java程序,最后的class文件都放在target目录中
#设置本机存放资源的目录位置(设置本机仓库):
# 1. 修改maven的配置文件, maven安装目录/conf/settings.xml
#    先备份 settings.xml
# 2. 修改 <localRepository>  指定你的目录(不要使用中文目录)
mvn test-compile: #编译测试程序
mvn test:#执行测试
mvn package:#打包
mvn install:#安装
mvn deploy:#将构件包部署到远程仓库

**注意:**在使用命令时必须进入pom.xml所在的文件目录!

重点概念

<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>net.csdn.demo</groupId>
  <artifactId>demo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!-- 打包类型 -->
  <packaging>jar</packaging>
  <!-- 项目名 -->
  <name>demo</name>
  <!-- 官方网站 -->
  <url>http://maven.apache.org</url>

<!-- 项目属性 -->
  <properties>
    <!-- 项目构建时的字符编码集 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <!-- 依赖: druid gson -->
  <dependencies>
    <!-- 单元测试工具包 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

POM(重点)

1.含义:

  • POM:Project Object Model 项目对象模型
  • DOM:Document Object Model 文档对象模型

2.pom.xml 对于Maven工程是核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置,重要程度相当于web.xml对于动态web工程。

3.目前我们在Pom中引入了依赖以及当前项目的坐标位置

Maven的坐标

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

  • groupid:公司或者组织域名的倒写+项目名
<groupid>net.csdn.maven</groupid>
  • artifactid模块名
<artifactid>Hello</artifactid>
  • version:版本
<version>1.0</version>

scope依赖

maven解析依赖信息时会到本地仓库中取查找被依赖的jar包

1、对于本地仓库中没有的会去中央仓库去查找maven坐标来获取jar包,获取到jar之后会下载到本地仓库

2、对于中央仓库也找不到依赖的jar包的时候,就会编译失败了

如果依赖的是自己或者团队开发的maven工程,需要先使用install命令把被依赖的maven工程的jar包导入到本地仓库中

举例:再创建第二个maven工程HelloFriend,其中用到了第一个Hello工程里类的sayHello(String name)方法

我们在给HelloFriend项目使用 mvn compile命令进行编译的时候,会提示缺少依赖Hello的jar包。怎么办呢?

到第一个maven工程中执行 mvn install后,你再去看一下本地仓库,你会发现有了Hello项目的jar包

一旦本地仓库有了依赖的maven工程的jar包后,你再到HelloFriend项目中使用 mvn compile命令的时候,可以成功编译

在这里插入图片描述
依赖范围的区别:
1、compile,默认值,适用于所有阶段(开发、测试、部署、运行),本jar会一直存在所有阶段。
2、provided,只在开发、测试阶段使用,目的是不让Servlet容器和你本地仓库的jar包冲突 。如servlet.jar。
3、runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
4、test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
5、system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
在这里插入图片描述

仓库

1.仓库的分类

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

  • 私服:搭建在局域网环境中,为局域网范围内的所有Maven工程服务
    - 在这里插入图片描述

  • 中央仓库:假设在Internet上,为全世界所有Maven工程服务

  • 中央仓库镜像:为分担中央仓库流量,提升用户访问速度。
    1.仓库中保存的内容:Maven 工程

  • Maven自身所欲要的插件

  • 第三方框架爱或工具的jar包(jdk-我)

  • 我们自己开发的Maven工程

生命周期

默认生命周期:校验-初始化-编译-测试-打包-集成测试-安装-部署

validate-initialize-compile-test-package-integrationTest-install-deploy

Clean Lifecycle 在进行真正的构建之前进行一些清理工作。

1、pre-clean  执行一些需要在clean之前完成的工作

2、clean  移除所有上一次构建生成的文件

3、post-clean  执行一些需要在clean之后立刻完成的工作

Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。

1、validate
2、generate-sources
3、process-sources
4、generate-resources
5、process-resources     复制并处理资源文件,至目标目录,准备打包
6、compile     编译项目的源代码
7、process-classes
8、generate-test-sources
9、process-test-sources
10、generate-test-resources
11、process-test-resources     复制并处理资源文件,至目标测试目录
12、test-compile     编译测试源代码
13、process-test-classes
14、test     使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署
15、prepare-package
16、package     接受编译好的代码,打包成可发布的格式,如 JAR 
17、pre-integration-test
18、integration-test
19、post-integration-test
20、verify
21、install     将包安装至本地仓库,以让其它项目依赖。
22、deploy     将最终的包复制到远程的仓库,以让其它开发人员与项目共享

Site Lifecycle 生成项目报告,站点,发布站点。

1、pre-site 执行一些需要在生成站点文档之前完成的工作
2、site    生成项目的站点文档
3、post-site     执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
4、site-deploy     将生成的站点文档部署到特定的服务器上

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值