JavaWeb之11_maven

Maven


呼~

一、概述

1. 概念

  • Maven官网:https://maven.apache.org

2. 功能

  • maven可以管理jar文件
  • 自动下载jar和它的文档,源代码
  • 管理jar直接的依赖,自动下载其依赖
  • 管理需要的jar版本
  • 帮你编译程序,把java编译为class
  • 帮你测试代码是否正确
  • 帮你打包文件,形成jar文件,或者是war文件
  • 帮你部署项目

3. 构建

  • 构建:指项目的构建,面向过程的,就是一些步骤,完成需昂木代码的编译、测试、允许、打包、部署等
  • 1)清理:把之前项目编译的东西删除,为新的编译代码做准备
  • 2)编译:把程序源代码编译为执行代码,java-class文件。批量的,而命令javac只能编译一个文件
  • 3)测试:maven可以执行测试程序代码。批量的,maven同时执行多个测试代码
  • 4)报告:生成测试结果的文件,测试通过没有
  • 5)打包:把项目中所有的class文件,配置文件等所有资源放在一个压缩文件中。
    • 这个压缩文件就是项目的结果文件,通常java程序的压缩文件是jar扩展名,对于web应用,压缩文件以war为扩展名
  • 6)安装:把(5)中生成的jar文件、war文件安装到本机仓库
  • 7)部署:把程序安装好可以执行

4. 核心概念

  • 1)POM:一个文件,名称是pom.xml。pom项目对象模型。
    • maven把一个项目当作一个模型使用,可以控制maven构建项目的过程,管理jar依赖
  • 2)约定的目录结构:maven项目的目录和文件的位置都是规定的
  • 3)坐标:是一个唯一的字符串,用来表示资源的
  • 4)依赖管理:管理项目可以使用的jar文件
  • 5)仓库的管理(了解):资源存放的位置
  • 6)生命周期(了解):maven工具构建项目的过程
  • 7)插件和目标(了解):执行maven构建时的工具是插件
  • 8)继承
  • 9)聚合

5. 安装配置

  • 1)从maven官网下载安装包
    • 3.3.9版本使用广泛,配合jdk1.8使用
    • 历史版本下载:https://archive.apache.org/dist/maven/maven-3/
  • 2)解压
    • bin目录:执行程序,主要是mvn.cmd
    • conf目录:maven工具本身的配置文件:settings.xml
  • 3)配置环境变量(需要JAVA_HOME)
    • 在系统环境变量中,指定一个M2_HOME的名称,指定maven安装目录,bin之前的目录
    • 在把M2_HOME加入到path中,%M2_HOME%\bin
  • 4)验证:mvn -v
  • 5)修改资源(本地仓库)存放路径(默认C盘)
    • maven安装目录/conf/settings.xml,修改<localRepository>指定目录

二、核心概念

1. 约定目录

Hello/
	---/src
	------/main			//主程序java代码和配置文件
	---------/java		//程序包和java文件
	---------/resources  //配置文件

	------/test			//测试文件
	---------/java		//测试文件
	---------/resources  //测试的配置文件

	---/pom.xml			//maven核心文件,maven项目必须有该文件
  • 1)手动创建目录和java文件,在cmd中输入mvn compile编译src/main目录下的所有java文件
    • 发现在下载东西
      • maven工具执行的很多操作需要插件(java–jar文件)完成的
    • 下载什么?
      • jar文件,叫做插件,完成某些功能
    • 下载到哪儿了?
      • 默认仓库:c:\Users\(登录操作系统的用户名)Administrator\.m2\repository
    • 执行命令后的结果:在项目根目录生成target目录,maven编译的java程序,最后的class文件都放在target目录
  • 2)设置本机存放资源的目录
    • 修改maven配置文件,maven安装目录/conf/settings.xml
      • 先备份settings.xml文件
      • 修改<localRepository>指定目录

2. 仓库

  • 1)仓库:存放maven使用的jar包和项目使用的jar包
  • 2)仓库分类
    • 本地仓库:个人计算机上的文件夹
    • 远程仓库:互联网上,使用网络才能使用的仓库
      • 中央仓库:最权威,所有开发人员都共享的一个集中仓库,https://repo.maven.apache.org
      • 中央仓库的镜像:中央仓库的备份,在各大州,重要城市都有镜像
      • 私服:在公司内部局域网使用
  • 3)仓库的使用
    • maven仓库的使用不需要人为干预
    • 使用流程:maven首先查本地仓库 — 私服 — 镜像 — 中央仓库

3. pom文件

  • 1)pom:项目对象模型,pom.xml

  • 2)坐标:唯一值,在互联网中唯一标识的一个项目

    • <groupId>公司域名倒写</groupId>
      <artifactId>自定义项目名</artifactId>
      <version>自定义版本号</version>
      
  • 3)packaging:打包后压缩文件的扩展名,默认为jar。web应为war

  • 4)依赖:dependenciesdependency,项目中使用的各种资源说明

  • 5)properties:设置属性

  • 6)build:maven在进行项目的构建时,配置信息,例如,指定编译java代码使用的jdk版本

    • <build>
      	<pluginManagement>
          	<plugins>
                  <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <!-- 插件名称 -->
                      <artifactId>maven-compiler-plugin</artifactId>
                      <!-- 插件版本 -->
                      <version>3.8.1</version>
                      <configuration>
                          <source>1.8</source> <!-- 告诉maven,写代码实在jdk1.8上编译的 -->
                          <target>1.8</target> <!-- 程序应该运行在1.8的jdk上 -->
                      </configuration>
                  </plugin>
          	</plugins>
          </pluginManagement>
      </build>
      

4. 坐标(gav)

  • 坐标:唯一值,在互联网中唯一标识的一个项目

    • <groupId>公司域名倒写</groupId>
      <artifactId>自定义项目名</artifactId>
      <version>自定义版本号</version>
      

5. 生命周期

  • 就是maven构建项目的过程,清理、编译、测试、报告、打包、安装、部署

6. maven命令

maven命令:单独使用,可以通过maven命令完成maven生命周期的执行

插件:maven命令执行时,真正完成功能的是插件,就是一些jar文件

  • 1)mvn clean:清理(会删除原来编译和测试的目录,即 target目录,但是已经install到仓库里的包不会删除)
  • 2)mvn compile:编译主程序(会在当前目录下生成一个target,里边存放编译主程序之后生成的字节码文件)
  • 3)mvn test-compile:编译测试程序(会在当前目录下生成一个target,里边存放编译测试程序之后生成的字节码文件)
  • 4)mvn test:测试(会生成一个目录surefire-reports,保存测试结果)
  • 5)mvn package:打包主程序(会编译、编译测试、测试、并且按照 pom.xml配置把主程序打包生成jar包或者war包)
  • 6)mvn install:安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)
  • 7)mvn deploy:部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中。还会自动把项目部署到web容器中。)

三、生成目录target

  • 1)在编译命令完成后,会在项目根目录创建一个target文件,该文件存放java文件的字节码文件和配置文件
  • 2)mvn compile,编译main/java目录下的java为class文件,并将class文件放入target/classes目录
    • 还会把main/resources目录下的所有文件,都拷贝到target/classes目录下

四、Maven在IDEA中使用

1. 简介

  • 1)idea中设置了内置maven,一般不使用内置的。
  • 2)使用自己安装的maven,需要覆盖idea中默认设置

2. idea配置

  • 1)File — Settings(当前工程)/ Other Settings(以后工程),两个目录都需要设置
  • 2)Build,Execution,Deployment — Builds Tools — Maven
    • 该页面的三个值
      • Maven home directory:maven安装目录
      • User settings file:maven安装目录 / conf / settings.xml文件
      • Local repository:本地仓库路径
  • 3)Maven — Runner
    • 该页面的值
      • JRE:选择jdk版本
      • VM Options:设置参数-DarchetypeCatalog=internal,maven项目在创建时会联网下载模板文件,比较大,设置该参数就不用下载,创建maven项目快

3. 创建maven项目

  • 1)创建普通java项目:创建项目时,选中create from archetype,选择maven-archetype-quickstart
  • 2)web项目:创建项目时,选中create from archetype,选择maven-archetype-webapp

4. 导入maven项目

  • 进入工程结构
  • 选择Modules — 点击+号 — import Module — 选择maven项目 — 选择import module from external model ,在下面选择maven
  • 导入后,在工程结构中选择该项目的JDK版本:DependciesModule SDK — ok

5. 使用技巧

① pom.xml文件导入依赖有红色波浪线

  • 右键pom.xml文件,maven — Reimport
  • 或者右边maven栏的刷新

五、依赖管理

1. 简介

  • 1)依赖范围:在<dependice>中的<scope>子标签中定义。表示依赖在项目中哪些阶段有效(maven生命周期中)
  • 2)scope取值:
    • compile:默认值。参与主程序、测试程序、打包、部署
    • test:只对测试程序有效
    • provided:提供者(别人有,我不用提供给别人)。只对主程序、测试程序有效

六、常用设置

1. 属性设置

  • <properties></properties>设置常用属性

2. 全局变量

  • 1)在<properties></properties>通过自定义标签声明变量(标签名就是变量名)

  • 2)在pom.xml文件中其他位置,使用${标签名}使用变量值

  • 自定义全局变量一般是定义依赖的版本号,当项目中要使用多个相同的版本号,先使用全局变量,在使用${变量名}

3. 资源插件

① 简介

  • 1)在build标签中定义,扫描不存放在resources目录下的配置文件

    • <build>
      	<resource>
          	<directory>src/main/java</directory>  <!--文件所在目录-->
              <!--包括目录下的properties和xml文件都会扫描到-->
              <includes>
              	<include>**/*.properties</include>
                  <include>**/*.xml</include>
              </includes>
              <!--false不启用过滤,因为*.properties已经起到过滤作用了-->
              <filtering>false</filtering>
          </resource>
      </build>
      
  • 2)作用:mybatis中会用到

② 实际使用

  • 1)默认没有使用该插件的时候,maven执行编译时,会把src / main / resource目录中的文件拷贝到 target / classes目录中。对于 src / main / java 目录下的非java文件,不拷贝到 target / classes 目录中。
  • 2)当程序中有文件需要放在 src / main / java 目录中,当执行java程序时,需要用到它。就需要告诉maven在编译( mvn compile) src / main / java 目录下的程序时,需要把文件一同拷贝到 target / classes目录下。此时就需要在<build>中加入<resources>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值