Maven——自动化构建工具

第一章 Maven简介

1.1 Maven的定义

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

Maven的作用:

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

1.2 Maven中的概念

在这里插入图片描述

第二章 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文件以方便进行构建和描述。

<?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.apache.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.bjpowernode</groupId>        
  <artifactId>ch01-maven</artifactId>                
  <version>1.0-SNAPSHOT</version>             

  <!-- 依赖 -->  
  <properties>
     <java.version>1.8</java.version>
     <maven.compiler.source>1.8</maven.compiler.source>
     <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
</project>

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*/

在这里插入图片描述
项目使用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

在这里插入图片描述

2.2.3其他

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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这个目录

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

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

Maven仓库的工作顺序:
在这里插入图片描述
如果没有本地厂库:则直接从中央仓库查找下载

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
在这里插入图片描述
编译器设置
在这里插入图片描述
2.设置其他新建的项目与导入项目(点此后与上面的步骤相同)

第4章 依赖范围

默认的scope是‘compile’,会随着java打包将相 关文件一起打包
在这里插入图片描述
在这里插入图片描述

第五章 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)配置
在这里插入图片描述
3)使用资源插件
在这里插入图片描述
4)告诉Maven把src/mian/java目录中的指定的指定扩展名称的文件拷贝到target/classes目录中
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值