maven预习博客

一、maven的简介

1.1、maven是什么

    Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周
期阶段中插件目标和逻辑。 核心功能 Maven的核心功能是合理叙述项目间的依赖关系,通俗点 就是通过pom.xml文
件的配置获取jar包不用手动的去添加jar包。其本质就是通过配置pom.xml来获取jar包,当然这是在该项目必须是maven项目的前提下。那么什么是
maven项目 maven项目是啥? 我们这样来理解maven项目,就是在java项目和web项目上裹了一层maven,本质上
java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能,即通过
pom.xml添加jar包 就像在蜜汁鸡外面裹了一层面粉油炸一下变成了炸鸡,但是他还是一只鸡

1.2、maven能做什么

1. 项目的自动构建,帮助开发人员做项目代码的编译、测试、打包、安装、部署工作。
2. 管理依赖(管理项目中使用的各种jar包)

1.3、maven中的概念

1. pom
2. 约定的目录结构
3. 坐标
4. 依赖管理
5. 仓库管理
6. 生命周期
7. 插件和目标
8. 继承
9. 聚合

1.4、maven工具的获取和安装

参考maven安装教程

1.5、maven的使用方式

1. maven可以独立使用:创建项目,编译代码,测试程序,打包,部署等
2. maven和idea一起使用:通过idea借助maven,实现编码,测试,打包等等

二、maven的核心概念

2.1、约定的目录结构

maven使用大多数人遵循的目录结构,叫做约定的目录结构
一个maven项目是一个文件夹,比如项目叫做Hello

Hello项目文件夹
	\src
		\main				主程序目录(完成项目功能的代码和配置文件)
			\java			源代码(包括相关的类定义)
			\resources		配置文件
		\test				放置测试程序的代码(开发人员自己写的测试代码)
			\java			测试代码(junit)
			\resources		测试程序需要的配置文件
	\pom.xml				maven的配置文件,核心文件

2.2、POM

POM:Project Object Model 项目对象模型,maven把项目当作模型处理,操作这个模型就是操作项目。maven通过pom.xml文件实现项目的构建和依赖的管理

<?xml version="1.0" encoding="UTF-8"?>

<!-- project是跟标签,后面的是约束文件 -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apche.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

	<!-- pom模型的版本,就是4.0.0,不用管 -->
    <modelVersion>4.0.0</modelVersion>

	<!-- 坐标 -->
    <groupId>com.bluemsun</groupId>
    <artifactId>maven01</artifactId>
    <version>1.0-SNAPSHOT</version>

	<properties>
	    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	    <maven.compiler.source>1.8</maven.compiler.source>
    	<maven.compiler.target>1.8</maven.compiler.target>
  	</properties>
</project>

2.3、坐标

坐标组成 :groupId、artifactId、version。
坐标作用:确定资源的,是资源的唯一标识。在maven中,是每个资源的坐标。坐标值是唯一的,简称gav

	<!-- 坐标 -->
    <groupId>com.bluemsun</groupId>
    <artifactId>maven01</artifactId>
    <version>1.0-SNAPSHOT</version>
	<packaging>jar</packaging>
	
	groupId:组织名称,代码。公司,团体或者单位的标识。这个值通常使用公司域名的倒写。
	artifactId:项目名称。
	version:版本,项目的版本号。使用数字,3位组成。
			 例如:主版本号.次版本号。小版本号,如:5.2.0
         	 注意:版本号中有-SNAPSHOT, 表示快照,不是稳定的版本。      
   
	packaging:项目打包的类型, 有jar ,war, ear, pom等等 默认是jar

项目使用gav:

1.每个maven项目,都需要有一个自己的gav。
2.管理依赖,需要使用其他的jar ,也需要使用gav作为标识。

搜索坐标的地址: https://mvnrepository.com/

2.4 依赖 dependency

依赖:项目中要使用的其他资源(jar)。 

需要使用maven表示依赖,管理依赖。 通过使用dependency和gav一起完成依赖的使用

需要在pom.xml文件中,使用dependencies 和dependency, 还有gav 完成依赖的说明。

格式:

<dependencies>
  
    <!-- 日志 -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    
    <!-- mysql驱动 -->
     <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.16</version>
    </dependency>

</dependencies> 

maven使用gav作为标识,从互联网下载依赖的jar。 下载到你的本机上。 由maven管理项目使用的这些jar

2.5 仓库

仓库是存东西的,maven的仓库存放的是:

  1. maven工具自己的jar包。

  2. 第三方的其他jar, 比如项目中要使用mysql驱动。

  3. 自己写的程序,可以打包为jar 。 存放到仓库。

仓库的分类:

  1. 本地仓库(本机仓库): 位于你自己的计算机, 它是磁盘中的某个目录。

    本地仓库:默认路径,是你登录操作系统的账号的目录中/.m2/repository

    例如:
         C:\Users\32570\.m2
    
    修改本地仓库的位置:修改maven工具的配置文件(maven的安装路径\conf\setting.xml)
    

    ​ 步骤:

    ​ 1)创建一个目录,作为仓库使用。 目录不要有中文和空格。 目录不要太深。

    ​ 例如: E:\maven_repository

    ​ 2)修改setting.xml文件,指定 E:\maven_repository这个目录

        <localRepository>E:/maven_repository</localRepository>
    

    ​ 3) 可以把原仓库中的东西拷贝过来(不拷贝,下次就会再次联网下载)

  2. 远程仓库: 需要通过联网访问的

    1)中央仓库: 一个ftp服务器, 存放了所有的资源。

    2)中央仓库的镜像: 就是中央仓库的拷贝。 在各大主要城市都有镜像。

    3)私服:在局域网中使用的。 私服就是自己的仓库服务器。 在公司内部使用的。

maven使用仓库: maven自动使用仓库, 当项目启动后, 执行了maven的命令, maven首先访问的是本地仓库, 从仓库中获取所需的jar, 如果本地仓库没有 ,需要访问私服或者中央仓库或者镜像。
在这里插入图片描述

2.6 maven的生命周期,插件和命令

maven的生命周期: 项目构建的各个阶段。

插件:要完成构建项目的各个阶段,要使用maven的命令, 执行命令的功能是通过插件完成的。插件就是jar,一些类。

命令: 执行maven功能是 由命令发出的。 比如 mvn compile

生命周期:包括 清理, 编译, 测试,报告,打包,安装,部署

命令:
1) mvn clean:清理命令,作用删除以前生成的数据, 删除target目录。

2)mvn compile:编译命令,执行的代码编译, 把src/main/java目录中的java代码编译为class文件。

​ 同时把class文件拷贝到 target/classes目录。 这个目录classes是存放类文件的根目录(也叫做类路径,classpath)

3)mvn test-compile:编译命令, 编译src/test/java目录中的源文件, 把生成的class拷贝到target/test-classes目录。同时把src/test/resources目录中的文件拷贝到 test-clasess目录

4)mvn test:测试命令, 作用执行 test-classes目录的程序, 测试src/main/java目录中的主程序代码是否符合要求。

5)mvn package:打包,作用是把项目中的资源class文件和配置文件都放到一个压缩文件中, 默认压缩文件是jar类型的。 web应用是war类型, 扩展是jar,war的。
打包的文件名: artifactId-version.packaging

例如:
  <groupId>com.bluemsun</groupId>
  <artifactId>maven01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
  
生成的是:maven01-1.0-SNAPSHOT.jar

6)mvn install : 把生成的打包的文件 ,安装到maven仓库。

  <groupId>com.bluemsun</groupId>
  <artifactId>maven01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

groupId中的值, 如果有 "." 前和后都是独立的文件夹。 com\bluemsun
artifactId, 独立的文件夹
version,独立的文件夹

2.7 自定义配置插件

在pom.xml文件中, build标签中。设置插件

<!-- 设置构建项目相关的内容 -->
<build>
  <plugins>
    <!-- 设置插件 -->
	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-compiler-plugin</artifactId>
		<version>3.8.1</version>
		<configuration>
			<source>1.8</source> <!-- 指定编译代码的jdk版本 -->
			<target>1.8</target> <!-- 运行java程序使用的jdk版本-->
		</configuration>
	</plugin>
  </plugins>
</build> 

三、Maven和idea的集成

3.1 idea中集成maven

idea中有一个自带的maven。 我们要让idea使用自己安装的maven。

步骤:
idea集成maven的步骤
idea集成maven的步骤

3.2 创建基于maven的项目

步骤:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、依赖管理

依赖范围:使用scope表示依赖的范围。

依赖范围表示: 这个依赖(jar和里面类)在项目构建的那个阶段起作用。

依赖范围scope :

​ compile:默认, 参与构建项目的所有阶段

​ test:测试,在测试阶段使用, 比如执行mvn test会使用junit 。

​ provided: 提供者。 项目在部署到服务器时,不需要提供这个依赖的jar , 而是由服务器提供这个依赖的jar包

五、常用设置

1)讲的是properties它里面的配置

<properties>
	<maven.compiler.source>1.8</maven.compiler.source> 源码编译 jdk 版本
	<maven.compiler.target>1.8</maven.compiler.target> 运行代码的 jdk 版本
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 项目
	构建使用的编码,避免中文乱码
	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 生成报告的编码
</properties>
  1. 全局变量

在properties定义标签,这个标签就是一个变量, 标签的文本就是变量的值。

使用全局变量表示 多个依赖使用的版本号。

使用步骤:

1.在properties标签中,定义一个标签,指定版本的值

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
  <!--自定义变量-->
  <spring.version>5.2.5.RELEASE</spring.version>
  <junit.version>4.11</junit.version>
</properties>
  1. 使用全局变量, 语法 ${变量名}
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>${spring.version}</version>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-web</artifactId>
  <version>${spring.version}</version>
</dependency>

3)使用资源插件

处理的配置文件的信息, maven默认处理配置文件

①:maven会把src/main/resources目录中的文件, 拷贝到target/classes目录下

②:maven只处理src/main/java目录中的 .java文件,把这些java文件编译为class,拷贝到 target/classes目录中。 不处理其他文件。

<build>
  <!--资源插件
      告诉maven把 src/main/java目录中的 指定扩展名的文件 拷贝到 target/classes目录中。
  -->
  <resources>
    <resource>
      <directory>src/main/java</directory><!--所在的目录-->
      <includes>
      <!--包括目录下的.properties,.xml 文件都会扫描到-->
        <include>**/*.properties</include>
        <include>**/*.xml</include>
      </includes>
        <!--  filtering 选项 false 不启用过滤器, *.property 已经起到过
        滤的作用了 -->
      <filtering>false</filtering>
    </resource>
  </resources>
</build>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值