Maven

Maven

1 .1Maven是什么

​ Maven 是 Apache 开源组织奉献的一个开源项目。Maven 这个词可以翻译为“知识的积累”,也可 以翻译为“专家”或“内行”。

​ Maven 的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)。 开发人员只需做一些简单的配置,就可以批量完成项目的构建、报告和文档的生成工作。

​ Maven 是跨平台的,这意味着无论是在 Windows 上,还是在 Linux 或者 Mac 上,都可以使用同 样的命令。

1.2 构建

​ 构建相比于创建更为复杂,创建的“项目”它不一定可以运行,但是构建的项目它是一个完整的、可以运行的项目。

​ 在实际的项目开发中,我们需要做许多的事情,比如框架整合,Java源程序编写,静态资源的设 计,第三方Jar包的引用,各种各样的配置文件的使用等,并且这些资源都必须按照要求放在正确的目录 结构中,这样在将项目部署到服务器上才可以被运行。

​ 综上所述:构建就是以我们编写的Java代码,框架配置文件,静态资源等作为原材料,去生产一个 可以运行的项目的过程。

1.构建的主要环节

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

2.编译:将java文件编译成字节码文件

3.测试:自动测试,自动调用Junit

4.报告:测试执行的结果

5.打包:动态Web工程打包成war包,普通java工程jar

6.安装:将打包得到的文件复制到仓库中的指定位置

7.部署:将war包复制到服务器指定目录下。

2.安装Maven

1.官网下载安装包,找一个没有中文的目录解压

2.配置环境变量

  • 检查JAVA_HOME
  • 配置Maven
    • MAVEN_HOME或M2_HOME
    • path
  • cmd—> mvn - v 查看Maven版本

3.Maven

1.约定的目录结构

在这里插入图片描述

2.POM

3.坐标

4.依赖

5.仓库

6.生命周期,插件,目标

7.继承

8.聚合

3.1 第一个Maven工程

src : 源码

pom.xml :Maven工程的核心配置文件

main : 存放主程序

test : 存放测试程序

java : Java源文件

resource : 存放框架或其他配置文件

需要在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>
	<groupId>org.wdzl</groupId>
	<artifactId>FirstMaven</artifactId>
	<version>1.0-SNAPSHOT</version>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.8.1</version>
				<configuration>
					<source>11</source>
					<target>11</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>

5.常用命令

1.mvn compile:编译主程序

2.mvn clean:清理

3.mvn test-compile:编译测试程序

4.mvn test:执行测试

5.mvn package:打包

注意:
  • 执行maven命令,必须进入pom.xml所在目录
  • Maven工程所依赖的插件,并不包含在Maven核心程序中
    • 当我们执行Maven命令,如果需要某些插件, Maven主程序首先会到本地仓库中寻找
      • 如果没配置:C–>用户–>当前用户名一致的文件–>.m2
      • 配置了就在配置路径下找
    • 如果本地仓库找不到,就会联网去中央仓库寻找,并下载到本地仓库中

6.POM

pom:Project Object Model项目对象模型

pom.xml:对于Maven工程,它是核心配置文件,与构建相关的所有配置都是在这个又件中配置,后期我们的学习也是围绕着这个文件。

7.坐标

1.在我们maven中的坐标

  1. <groupId>:公司或组织的域名倒序+项目名

    <groupId>com.wdzl</groupId>
    
  2. <artifactId>模块名

    <artifactId>HelloMaven</artifactId>
    
  3. <version>版本号

    <version>1.0-SNAPSHOT</version>
    

    注意:

    • ​ SNAPSHOT-不稳定版本或快照版本,表示该项目处于开发状态,随时可能发生变化
    • RELEASE-代表稳定版本或发布版本,一般项目上线后都会改为RELEASE版本

8.仓库

1.分类
  • 本地仓库:当前电脑上部署的Maven仓库,它是为当前电脑上的所有Maven工程服务的
  • 远程仓库:
    • 私服:搭建在局域网中,为局域网中的Maven工程服务的
    • 中央仓库:架设在互联网.上,为全球所有Maven工程服务
    • 中央仓库镜像:为中央仓库分担访问压力,提高用户体验性

2.仓库里面保存的内容

  • Maven自 身所需的插件
  • 第三方框架或工具的jar包
  • 我们自己开发的Maven项目

9.依赖

9.1依赖的转递性

通过快捷键:Alt+Ctrl+Shift+U 调出Maven项目依赖关系

9.2依赖范围

常见的依赖范围:test compile provided

provided依赖就比如:Servlet的依赖是由tomcat提供的,我们开发的时候要导入该依赖,但是我们部 署的时候,一颗由服务器提供,类似于这种依赖关系 我们会使用provided.

compile 与 test 范围对比

在这里插入图片描述

compile 与 provided范围对比

在这里插入图片描述

  • compile依赖范围
    • 主程序:有效
    • 测试程序:有效
    • 打包:参与
    • 部署:参与
  • test依赖范围
    • 主程序:无效
    • 测试程序:有效
    • 打包:不参与
  • provided依赖范围
    • 主程序:有效
    • 测试程序:有效
    • 打包:不参与
    • 部署:不参与,原本的依赖由服务器提供

9.3依赖原则

1.就近原则

2.先到先得原则

10.生命周期

清理、初始化、编译、测试、打包、集成测试、验证、部署和生成站点 .

10.1Maven的三个生命周期

Maven中有三个相互独立的生命周期,分别是:

​ ①Clean Lifecycle:在进行项目构建前进行的一些清理工作

​ ②Default Lifecycle:构建的核心部分,如编译,测试,打包,安装,部署等。

​ ③Site Lifecycle: 生成项目报告,发布站点等

10.2 Clean生命周期

  1. pre-clean:执行一些需要在clean之前完成的工作
  2. clean:删除上一次构建生成的文件
  3. post-clean:执行一些需要在clean之后完成的工作

10.3Default生命周期

  1. validate:验证,验证项目是否正确且所有必须信息是可用的
  2. compile:编译,源代码编译在此阶段完成
  3. Test:测试,使用适当的单元测试框架进行测试,例如JUnit。
  4. package:打包,创建jar包 或 war包
  5. verify:检查,对集成测试的结果进行检查,以保证质量达标
  6. install:安装,安装打包的项目到本地仓库,以供其他程序使用
  7. deploy:部署,拷贝最终的工程包到远程仓库中,以共享给其他开发人员和 工程

11.插件和插件目标

1.生命周期的各个阶段定义了该阶段要执行的任务是什么

2.各个阶段和插件的目标是对应

3.相似的目标由特定的插件来完成

4.插件的目标也可以看作是调用插件的命令

12.继承

先举个例子,为什么需要继承,继承可以用来解决什么问题

比如项目中有3个模块

​ 模块1 依赖 Junit 4.1

​ 模块2 依赖于Junit 5.2

​ 模块3 依赖于Junit 5.3

由于test范围的依赖不能传递,所以这些插件必然分散在各个模块中,这样很容易造

成版本的不一致, 所以我们现在需要统一管理各个模块中对Junit依赖的版本。

解决思路:

​ 将Junit依赖统一提取到“父”工程中,在子工程中声明junit依赖时不指定版本,而版本号以父工程中统 一设定的为准,同时也方便后期维护

操作步骤

  1. 创建一个Maven父工程。注意该工程打包方式为:pom方式
  2. 在子工程中声明对父工程的引用
  3. 在子工程中 声明对Junit的依赖,但不包含版本号信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值