Maven——自动化构建工具

第一章 Maven简介

1.1 Maven的定义

Maven是一个项目管理工具,可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。

Maven的作用:

  • 项目的自动构建:帮助开发人员做项目的编译、打包、安装、部署等工作。
  • 管理依赖:依赖-项目中需要使用的其他资源,常见的是jar包(管理项目中各种jar包)
    在没有Maven前,我们需要去网络上下载需要的正确版本的jar包,并且手工处理jar包之间的依赖。

1.2 Maven中的概念

Maven——自动化构建工具_第1张图片

第二章 Maven的核心概念

2.1约定的目录结构

maven项目有约定俗成的项目结构,叫做约定的目录结构。
一个maven项目是一个文件夹。
例如在一个名为Hello的项目中:

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

在这里插入图片描述
使用 maven compile,完成后与src同层会多出一个target目录
在这里插入图片描述

2.2 pom(Project object model)

Maven把一个项目的结构和内容抽象成一个模型,操作模型就是操作项目。通过操纵在xml文件以方便进行构建和描述。





    
    
  4.0.0

    
  com.bjpowernode        
  ch01-maven                
  1.0-SNAPSHOT             

    
  
     1.8
     1.8
     1.8
  

2.2.1 坐标

  <!-- 坐标 -->  
  <groupId>com.bjpowernode</groupId>          //组织名称,代码:公司,团体或单位标识,这个值通常是公司名称的倒写;也可以是域名倒写加项目名称
  <artifactId>ch01-maven</artifactId>         //项目名称:如果groupId中有项目,此时当前的值就是子项目的名字,是唯一的。
  <version>1.0-SNAPSHOT</version>             //版本名称:使用3位数字组成,例如:主版本号.次版本号.小版本号
 /*坐标组成包括:groupId,artifactId,version,这三个值,是资源的唯一标识,在maven中每个资源都是坐标,坐标是唯一的简称gav*/ 
<packaging>jar</packaging>
/*packaging 项目打包的类型, 有jar ,war, ear, pom等等 默认是jar*/

Maven——自动化构建工具_第2张图片
项目使用gav

1.每个maven项目,都需要有一个自己的gav

2.管理依赖,需要使用其他的jar ,也需要使用gav作为标识。

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

2.2.2 依赖

1.依赖:项目中要使用的其他资源(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

Maven——自动化构建工具_第3张图片

2.2.3其他

Maven——自动化构建工具_第4张图片
Maven——自动化构建工具_第5张图片
Maven——自动化构建工具_第6张图片

2.3仓库

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

  1. maven工具自己的jar包。
  2. 第三方的其他jar, 比如项目中要使用mysql驱动。
  3. 自己写的程序,可以打包为jar 。 存放到仓库。

仓库的分类:

  1. 本地仓库(本机仓库):
    位于你自己的计算机, 它是磁盘中的某个目录。本地仓库:默认路径,是你登录操作系统的账号的目录中/.m2/repository

修改本地仓库的位置:修改maven工具的配置文件(maven的安装路径\conf\setting.xml)
​ 步骤:

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

	​ 例如: D:\openrepository

-修改setting.xml文件,指定 D:\openrepository这个目录

D:/openrepository
  1. 远程仓库: 需要通过联网访问的
    - 中央仓库: 一个ftp服务器, 存放了所有的资源
    - 中央仓库的镜像: 就是中央仓库的拷贝。 在各大主要城市都有镜像。
    - 私服:在局域网中使用的。 私服就是自己的仓库服务器。 在公司内部使用的

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

Maven仓库的工作顺序:
Maven——自动化构建工具_第7张图片
如果没有本地厂库:则直接从中央仓库查找下载

2.3 Maven的生命周期,插件和命令

  1. maven的生命周期: 项目构建的各个阶段。 包括 清理, 编译, 测试,报告,打包,安装,部署。构建项目时按照生命周期顺序构建,每一个阶段都有特定的插件来完成。不论现在要执行生命周期中的哪个阶段,都是从这个生命周期的最初阶段开始。
    的。
  2. 插件:要完成构建项目的各个阶段,要使用maven的命令, 执行命令的功能是通过插件完成的。插件就是jar,一些类
  3. 命令: 执行maven功能是 由命令发出的。 比如 mvn compile
2.3.1 常用命令(都在pom.xml下执行命令)
1.清理
mvn clean   //会删除原来编译和测试的目录,即target目录,但是已经install到仓库里的包不会删除
//插件: maven-clean-plugin 
2.编译
mvn compile //编译主程序,会在与src统计目录下生产target目录,并把src/main/目录下的所有java代码编译成class文件并将其放在target/classes目录下
//插件: maven-compiler-plugin 版本3.1。 编译代码的插件//maven-resources-plugin 版本2.6 。 资源插件, 处理文件的。 作用是把src/main/resources目录中的文件拷贝target/classes目录中。
3.测试
mvn test-compile  //编译src/test目录中的源文件,把生成的class拷贝到target/test-classes目录。同时把src/test/resources目录中的文件拷贝到 test-clasess目录
/*插件: maven-compiler-plugin   编译代码的插件
		maven-resources-plugin  资源插件, 处理文件的*/
mvn test		  //测试src/main/java目录中的主程序代码是否符合要求,执行的是target/test-compile/下的类文件.会生成一个目录surefire-reports,保存测试结果 
/*插件: maven-surefire-plugin   编译代码的插件*/
4.打包
mvn package       //打包,作用是把项目中的资源class文件和配置文件都放到一个压缩文件中, 默认压缩文件是jar类型的。web应用是war类型,扩展是jar,war的。放在target目录下
/* 插件:maven-jar-plugin,执行打包处理。生成一个jar扩展的文件,放在target目录下
打包的文件包含的是 src/main目录中的所有的生成的class和配置文件和test无关。
​ 生成的是 ch01-maven-1.0-SNAPSHOT.jar   -> 打包的文件名: artifactId-version.packaging*/
5.安装
mvn install    // 把生成的打包的文件(放在target目录下) ,并安装到maven仓库。
/* 插件: maven-install-plugin  把生成的jar文件安装到本地仓库。*/
安装目录为当前maven仓库下该项目groupID/artifactId/version/目录下
如果groupId中有'.',前后都是独立的文件夹
6.部署
mvn deploy
将程序安装在服务器上
命令可组合
mvn clean package
2.3.2 自定义配置插件(在build标签中配置)

例如maven-complier-plugin,在pom.xml文件中build下设置,设置插件

<!--设置构建项目的操作-->
<build>
    <plugins>
    <!--设置插件-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-complier-plugin</artifactId>
            <version>2.1</version>
            <configuration>
            	<source>1.8</source>      //编译代码的jdk版本
                <target>1.8</target>	  /运行java程序的jdk版本
            </configuration>
        </plugin>
    </plugins>
</build>

第三章 IDEA中Maven的应用

3.1 Idea中集成maven

idea中自带maven,如何让idea用我们自己的maven
1.IDEA下maven的配置 File-settings
Maven——自动化构建工具_第8张图片
编译器设置
Maven——自动化构建工具_第9张图片
2.设置其他新建的项目与导入项目(点此后与上面的步骤相同)
Maven——自动化构建工具_第10张图片

第4章 依赖范围

默认的scope是‘compile’,会随着java打包将相 关文件一起打包
Maven——自动化构建工具_第11张图片
Maven——自动化构建工具_第12张图片

第五章 Maven常用设置

5.1全局变量

1)在Maven的pom.xml文件中,用于定义全局变量,POM中通过${property_name}的形式应用变量的值。

//定义全局的变量:
<properties>
	<spring.version>4.8.10.RELEASE</spring.version>
</properties>
//引用全局变量:
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<version>${spring.version}</version>
</dependency>

2)配置
Maven——自动化构建工具_第13张图片
3)使用资源插件
Maven——自动化构建工具_第14张图片
4)告诉Maven把src/mian/java目录中的指定的指定扩展名称的文件拷贝到target/classes目录中
Maven——自动化构建工具_第15张图片

你可能感兴趣的:(学习笔记,maven,java)