Maven学习

Maven是一个项目自动化构建工具,主要用于项目的构建、依赖管理和项目信息管理。它遵循约定的目录结构,通过POM文件来管理项目及其依赖。Maven的生命周期包括清理、编译、测试、打包、安装和部署等阶段,通过插件执行命令完成不同阶段的任务。在IDEA中,Maven可以方便地创建和管理项目,依赖管理则通过设定依赖范围如compile、test和provided等来控制。
摘要由CSDN通过智能技术生成

1.Maven简介

        1.1Maven能做什么

                1)项目的自动构建,能帮助开发人员做项目代码的编译,测试,打包,安装,部署等工作。

                2)管理依赖(管理项目中使用的各种jar包)

                        什么是依赖?

                                项目中需要使用的其他资源,常见的是jar。比如项目要使用mysql驱动。我们称项目依赖mysql驱动。

        1.2 什么是maven

                maven是项目的自动化构建工具,对于生产环境下多框架,多模块整合开发有着重要作用,管理项目的依赖。

        1.3 maven中的概念

  • POM

  • 约定的目录结构

  • 坐标

  • 依赖管理

  • 仓库管理

  • 生命周期

  • 插件和目标

  • 继承和聚合

2.Maven的核心概念

        1.约定的目录结构

                maven项目使用的大多数人遵循的目录结构-叫做约定的目录结构。

                一个maven项目是一个文件夹,比如Hello项目

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

                maven可以独立使用,创建项目,编译代码,测试程序,打包等。

                maven和idea一起使用,通过idea借助maven,实现编译,测试,打包等。

2.POM文件

                Project Object Model项目对象模型。Maven把一个项目的结构和内容抽象成一个模型,在xml文件中声明,方便进行构建和描述。

                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.apache.org/POM/4.0.0
            http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!--pom模型的版本-->
    <modelVersion>4.0.0</modelVersion>
    <!--坐标-->
    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <version>...</version>
    
    <properties>...</properties>
</project>

3.坐标

                坐标组成:groupId,artifactId,version。

                坐标作用:确定资源的,是自愿的唯一标识。maven中,每个资源都是坐标,坐标值是唯一的,简称gav。

<groupId>...</groupId>
groupId:组织名称,代码。公司,团体或者单位的标识。这个值常使用公司域名的倒写。
cn.edu.cuit
​
<artifactId>...</artifactId>
artifactId:项目名称,如果groupId中有项目,此时当前的值就是子项目名。
项目名称是唯一的。
 
<version>...</version>
version:版本,项目的版本号,三位组成(主版本号,次版本号,小版本号)
版本号有-SNAPSHOT,表示快照,是不稳定的版本

                搜索坐标的地址:maven仓库

4.依赖dependency

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

                通过使用dependency和gav一起完成依赖的使用。

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

格式:

<dependencies> 
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version>
</dependency>
</dependencies>

maven使用gav作为标识,从互联网下载依赖的jar包。

5.打包类型

        packaging 项目打包的类型,可以是jar,war,rar,ear,pom,默认为jar。

    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <version>...</version>
<packaging>...</packaging>
放置于本项目的坐标之下。

6.仓库

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

  • maven工具自己的jar包

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

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

仓库的分类:

  • 远程仓库

    中央仓库:当建立一个Maven工程的时候,Maven会检查pom.xml中的依赖信息,并在本地仓库获得依赖资源,如果没有找到,然后会从默认中央仓库查找下载。

    中央仓库的镜像,就是中央仓库的备份。

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

  • 本地仓库:位于自己的计算机上,是磁盘中的某个目录

    默认路径,为自己登陆操作系统的账号的目录:

    C:\Users\86185\.m2\repository

    这是我的机器上的

修改本地仓库的位置:修改maven安装路径中conf\setting.xml

<localRepository>D:\maven\repository</localRepository>

仓库的工作方式:

7. 生命周期,插件和命令

maven的生命周期:项目构建的各个阶段。包含 清理,编译,测试,报告,打包,安装,部署

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

命令:执行maven功能是由命令发出的。

单元测试

junit是一个单元测试工具,在java中经常使用。

单元:在java中指的是方法,一个方法就是一个单元,方法是测试的最小单位。

作用:使用junit去测试方法是否完成了要求,开发人员自测。

使用:

1)加入junit的依赖

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <scope>test</scope>
</dependency>

2)在src/test/java目录下创建测试类文件

建议:1.测试类的定义,名称一般是Test+要测试的类名称

2.测试类它的包名和测试的类包名一样

3.在类中定义方法,要测试代码。

方法定义:public方法

没有返回值

方法名称自定义,方法没有参数

4.在测试类中的方法,可以单独执行,测试类也可以单独执行

5.在方法上加入一个@Test

命令

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

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

同时还要把class文件拷贝到target/classes目录下。这个目录classes是存放类文件的根目录。

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

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

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

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

7)mvn deploy:部署主程序。

(上述所有命令的执行都必须在命令行进入pom.xml所在目录)

3.Maven在IDEA中的应用

1.idea中集中maven

 

1)maven安装目录

2)maven安装目录\conf\settings.xml

3)idea会获取settings.xml文件的内容,获取到本地仓库的位置

 

1)maven创建项目时,会从网络中下载一个archetype-catalog.xml作为项目的模板文件

archetypeCatalog=internal表示不用下载文件,加快创建maven项目的速度。

2)jdk信息

2.创建基于maven的普通项目

 

3.创建web项目

 

4.依赖管理

依赖范围

使用scope表示依赖的范围。

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

依赖范围scope:

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

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

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

5.常用设置

1)properties里面的配置

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

2)全局变量

在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>
  </properties>

2.使用全局变量,语法 ${变量名}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值