Maven

maven

1.1.maven的作用

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

(2)管理依赖(管理项目中使用的各种jar包),依赖:就是项目中需要使用的其他资源,常见的是jar包

1.2.没有使用maven怎么管理依赖

管理jar,需要从网络中单独下载某个jar

需要选择正确的版本,手工处理jar之间的依赖

1.3.什么是maven

maven是项目的自动化构架工具,管理项目的依赖

1.4.maven中的概念

①pom

②约定的目录结构

③坐标

④依赖管理

⑤仓库管理

⑥生命周期

⑦插件和目标

⑧继承

⑨聚合

1.5.maven的安装

因为maven是使用Java语言编写的,因此要安装maven,首先要保证maven已经配置了环境变量,之后才能配置maven的环境变量

maven的核心概念

1.约定的目录结构

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

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

maven的使用方式

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

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

<!--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/maven-v4_0_0.xsd">
	<!--表示的是pom的版本,也就是项目模型的版本-->			  
	<modelVersion>com.lkw</modelVersion>
    <!--坐标-->
	<groupId>maven01</groupId>
    <artifactId>hello</artifactId>
	<version>1.0-SNAPSHOT</version>
	
	<properties>
		<java.version>17</java.version>
		<maven.complier.source>1.8</maven.complier.source>
		<maven.complier.target>1.8</maven.complier.target>
	</properties>
</project>
3.坐标

坐标的组成是groupId,artifactId,version

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

<!--坐标-->
	<groupId>maven01</groupId>
    <artifactId>hello</artifactId>
	<version>1.0-SNAPSHOT</version>
groupId:组织名称,公司团体或者单位标识,通常是公司域名的倒写
artifactId:项目名称,如果groupId中有项目名,那么此时当前的值就是子项目名,项目名也是唯一的
version:项目的版本号,注意:当版本号中有-SNAPSHOT,表示快照,是不稳定的版本,当一个项目还没有完成的时候,就处于快照阶段

项目使用gav:

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

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

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

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

<dependencies>
    <!--各种需要使用的jar包-->
	<dependency>
		<groupId>...</groupId>
        <artifactId>...</artifactId>
        <version>...</version>
	</dependency>
	<dependency>
		<groupId>...</groupId>
        <artifactId>...</artifactId>
        <version>...</version></dependency>
	<dependency>
		<groupId>...</groupId>
        <artifactId>...</artifactId>
        <version>...</version></dependency>
</dependenncies>
maven使用gav作为标识,从互联网下载依赖的jar,下载到本机上,由maven管理项目使用的这些jar
5.仓库
1.maven的仓库存放的是:
  1. maven工具自己的jar包
  2. 第三方的其他jar包,比如项目中要使用MySQL的驱动jar包
  3. 自己写的程序,可以打包成jar,存放到仓库中
2.仓库的分类
  1. 本地仓库:(本机仓库),位于自己的计算机上,它是硬盘中的某个目录,本地仓库的默认路径是你登陆操作系统账号的目录中/.m2/repository

    修改本地仓库的位置:修改maven的配置文件(maven的安装路径/cong/settings.xml)

    步骤:

    1. 创建一个空文件夹,作为仓库使用,目录名不要有中文或者空格
    2. 修改settings.xml文件,将本地仓库的位置修改为新建的这个仓库的路径

    maven的工作方式

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P5PSqjpk-1648113778073)(C:/Users/lenovoliukaiwu/AppData/Roaming/Typora/typora-user-images/1648098876183.png)]

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

    1. 中央仓库:一个ftp服务器,存放了所有的资源
    2. 中央仓库镜像:是中央仓库的拷贝,在各大主要城市都有镜像
    3. 私服:在局域网中使用的,私服就是自己的仓库服务器,在公司内部使用
6.maven的声明周期,插件和命令

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

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

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

单元测试(junit)

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

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

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

使用单元测试

  1. 加入junit依赖

    <dependency>
    	<groupId>junit</groupId>
    	<artifaceId>junit</artifactId>
    	<version>4.12</version>
    	<scope>test</scope>
    </dependency>
    
  2. 在src/test/java目录下创建测试类文件,写测试代码

  3. 单元测试使用的建议:

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

    2. 测试类它的报名要和测试的类包名一样,比如都叫做com.lkw

    3. 在类中定义方法,编写测试代码

      方法的定义:public方法,没有返回值,方法名自定义(建议使用test+要测试的方法的名称),方法没有参数

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

    5. 在方法的头部加上@Test注解

maven的命令:

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

    插件:maven-clean-plugin

  2. mvn complie:编译命令,执行的代码编译,把src/main/java目录中的java代码编译为class文件,同时把class文件拷贝到target/classes目录,这个目录存放的是类文件的根目录,也叫做类路径,classpath

    插件:maven-complier-plugin

    插件:maven-resources-plugin:资源插件,处理文件的,作用是把src/main/resources目录中的文件拷贝到target/classes目录中

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

    插件:maven-complier-plugin 编译代码的插件

    ​ maven-resouces-plugin 资源插件,处理文件

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

    插件:maven-surefire-plugin

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

    插件:mave-jar-plugin:执行打包处理,生成一个jar扩展的文件,放在target目录下

    <groupId>com.lkw</groupId>
    <artifactId>maven-test</artifactId>
    <version>1.0-SANPSHOT</version>
    <packaging>jar</packaging>
    打包的文件名:artifactId-version.packaging
    最终生成的文件名是:maven-test-1.0-SANPSHOT.jar
    
  6. mvn install:把生成的好的打包的文件,安装到maven仓库中

    插件:maven-install-plugin:把生成的jar文件按转发到本地仓库中

    <groupId>com.lkw</groupId>
    <artifactId>maven-test</artifactId>
    <version>1.0-SANPSHOT</version>
    <packaging>jar</packaging>
    groupId中的值,如果有“.”前后都是独立的文件夹,比如com.lkw就是com/lkw
    artifactId和version都是独立的文件夹
    
  7. 自定义配置插件

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

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

maven与idea的集成

第一步:file—>settings
在这里插入图片描述

第二步:配置参数

在这里插入图片描述

创建基于maven的普通java项目

在这里插入图片描述

第一步:在src/main/java/相应的包名下创建一个名为HelloMaven的Java类作为被测试类

第二步:在这个类中编写要被测试的方法——addNUmber

package com.lkw;

public class HelloMaven {
    public int addNumber(int a ,int b){
        System.out.println("addNumber执行了");
        return a+b;
    }   
}

第三步:在src/test/java/相应的包名下创建一个名为TestHelloMaven的Java类作为测试类

第四步:在这个类中编写一个名为testAddNumber的方法

第五步:在测试方法上加上@Test注解

package com.lkw;

import org.junit.Assert;
import org.junit.Test;

public class TestHelloMaven {
    @Test
    public void testAddNumber(){
        //创建被测试类对象
        HelloMaven maven = new HelloMaven();
        int number = maven.addNumber(10, 20);
        Assert.assertEquals(30,number);
    }
}

第六步:点击run,测试方法是否可以运行

使用maven创建web应用

第一步:选择web应用的模板

在这里插入图片描述

第二步:在pom.xml文件中导入servlet和jsp的依赖

第三步:配置tomcat服务器

第四步:创建相应的页面

第五步:编写servlet

第六步:访问服务器

将项目打包之后依然可以访问tomcat的原因:

因为在使用idea工具的时候,idea里面的tomcat实际上是tomcat的一个副本,然后关闭idea,使用本机上的tomcat作为服务器的时候,使用startup.bat命令启动服务器,然后通过浏览器访问的要求是你所打包的项目必须是在CATALINA_HOME下面的webapps下面才可以,所以要求把在idea中打包的项目拷贝到webapps下面,然后在浏览器访问的时候端口号后面跟的是所打包文件的名字

依赖管理

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

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

依赖范围scope:

  1. complie:默认范围,参与构建项目的所有阶段
  2. test:测试,在测试阶段使用,比如执行mvn test
  3. provided:提供者,项目部署到服务器的时候,不需要提供这个依赖的jar,而是由服务器依赖的jar包明显的是servlet和jsp依赖

常用设置

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

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

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

使用步骤:

  1. 在properties标签中,定义一个标签,指定版本的值,这个标签名是自定义的,但是最好见名知义

    <properties>
    	<!--自定义标签-->
    	<spring.version>5.2.5.RELEASE</spring.version>
    	<junit.version>4.11</junit.version>
    </properties>
    
  2. 使用全局变量,语法${变量名}

  3. 使用资源插件

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

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

    ②:maven只处理src/main/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不启动过滤器,*.properties已经起到过滤作用了-->
    			<filtering>false</filtering>
    		</resource>
    	</resources>
    </build>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值