Maven笔记

一、Maven简述


1.1 什么是Maven?


在这里插入图片描述

Apache Maven 是一款基于 Java 平台的项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。

简单来讲Maven就是一个构建工具,用来管理我们的项目和依赖(jar),这样我们能把更多的精力放在开发上。

当然除了学习Maven外后期还会接触Gradle等构建工具。(之前搞安卓的时候接触过Gradle🐘)

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

在这里插入图片描述


Maven是专门用于管理和构建Java项目的工具,它的主要功能有:

  • 提供了一套标准化的项目结构(所有IDE使用Maven构建的项目结构完全一样)

  • 提供了一套标准化的构建流程(如 编译、测试、打包(jar包)、发布等)

  • 提供了一套依赖管理机制(使用Maven坐标配置来管理各种依赖)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rJfT2cwv-1667221049217)(Maven笔记.assets/image-20220522073140486.png)]


1.2 Maven模型


  • POM(Project Object Model)项目对象模型。
  • Dependency 依赖管理模型。
  • Plugin 插件。

1.3 Maven仓库


Maven Repository(Maven仓库)

Maven中有如下3种仓库:

  • 本地仓库,自己电脑上的仓库(存jar包的位置)

  • 私服仓库,速度比中央仓库要快,通常都是由一些公司、组织搭建的私有仓库,用于同步中央仓库上的文件。

  • 中央仓库:在互联网中,由Apache团队维护,包含了基本所有的jar包,版权原因不包含Oracle的驱动包

  • 中央仓库地址:https://mvnrepository.com



二、Maven的安装配置


2.1 下载Maven


新版Maven的下载地址:https://maven.apache.org/download.cgi

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7QyUNeZ4-1667221049218)(Maven笔记.assets/image-20220521213120092.png)]


通常比较新的东西不太稳定,接下来我们下载一个maven3.6.1Windows版。

Maven3.6.1下载地址:https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries

下载成功后,将Maven文件夹移动到你的工作目录并解压包即可。


Maven目录结构如下:

  • bin目录:存放一些可执行命令。(例如 mvn命令)
  • boot目录:该目录下只有一个文件plexus-classworlds-xxx.jar,这个文件它是一个类加载器框架,相对于默认的 java 类加载器,它提供了更丰富的语法以方便配置,Maven 使用该框架加载自己的类库。
  • conf目录:存放maven相关的配置文件。(例如 setting.xml)
  • lib目录:存放maven依赖的jar包。(Maven也是使用java开发的,所以它也需要依赖其他的jar包)

2.2 配置环境变量


1、新建系统变量MAVEN_HOME

变量名变量值
MAVEN_HOMED:\Program Files\Environment\apache-maven-3.6.1(Maven的安装目录/位置)

2、在系统变量path中引用这个变量

变量名变量值
Path%MAVEN_HOME%\bin

3、在命令提示符窗口中输入mvn -version

mvn -version

在这里插入图片描述

出现上述结果,表示Maven已经安装成功啦。

当然Maven的卸载也很简单,将Maven的工作目录删除,然后删除它的环境变量即可。


2.3 配置本地仓库


1、在Maven的工作目录中创建一个maven_repo文件夹,用来存放我们以后从中央仓库下载的jar包。

在这里插入图片描述


2、在conf/setting.xml文件中配置一个<localRepository>标签,并指向本地仓库位置。

在这里插入图片描述

<localRepository>D:\Program Files\Environment\apache-maven-3.6.1\maven_repo</localRepository>

在这里插入图片描述

配置之后,项目需要的依赖jar包如果本地仓库没有的话就需要去中央仓库下载,但是中央仓库在国外,速度会很慢,这时我们可以配置镜像服务器,只需要在conf/setting.xml中添加镜像地址即可。


2.4 配置阿里云镜像加速


在conf/setting.xml文件的<mirrors>标签中添加阿里云私服。

<mirror>
    <id>alimaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fLNniBJ7-1667221049227)(Maven笔记.assets/image-20220521222023776.png)]


2.5 配置使用JDK8编译

maven3.6.1版本默认的jdk版本是1.5,就会导致项目的兼容性问题,所以需要配置成1.8。

conf/settings.xml 中的 <profiles>标签内配置:

在这里插入图片描述

<profiles>
    <profile>
        <id>jdk-1.8</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <jdk>1.8</jdk>
        </activation>
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
           <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        </properties>
    </profile>
</profiles>


三、Maven的基本使用


3.1 Maven常用命令


Maven常用命令:

  • 编译(compile)

  • 清理(clean)

  • 打包(package)

  • 测试 (test)

  • 安装(install)

命令详解:

mvn compile         # 编译项目的源代码(会class字节码文件放在target目标目录中)
mvn clean           # 清除项目中target目录
maven package       # 将编译后的代码打包,如jar、war或者ear文件
mvn test            # 运行应用程序中的单元测试
mvn install         # 将项目包安装到本地仓库,这样项目包就可以用作其他本地项目的依赖

注意:执行maven命令需要当前目录有pom文件,然后在cmd窗口执行命令。

在这里插入图片描述

在这里插入图片描述


3.2 Maven的生命周期


Maven构建项目的生命周期描述的是一次构建过程经历经历了多少个事件。

Maven 对项目构建的生命周期划分为3套:

  • clean:清理工作。
  • default:核心工作,例如编译,测试,打包,安装等。
  • site:产生报告,发布站点等。

注意: 同一生命周期内,执行后面的命令,前边的所有命令都会自动执行。

例如 小张对maven项目进行打包操作,执行流程就是编译->测试->打包。

也就是同一生命周期内,执行后面的命令,前边的所有命令都会自动执行。


3.3 在IntelliJ IDEA中配置Maven


参考文章:https://blog.csdn.net/QZP51ZX/article/details/107522316

1、设置IntelliJ IDEA使用本地安装的Maven,并修改配置文件路径:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gvp3qkVO-1667221049227)(Maven笔记.assets/image-20220522062936040.png)]

2、设置maven在不联网的情况下使用本地插件构建项目:

-DarchetypeCatalog=internal

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gFjgdkPa-1667221049228)(Maven笔记.assets/b26495a420c348fb9a7dd6e924cb2a1c.png)]

然后重启IntelliJ IDEA即可!


3.4 Maven坐标详解


1、Maven坐标是用来干什么的?

  • Maven坐标指的是资源的唯一标识;
  • 使用坐标来构建项目或者引入项目中需要的依赖(dependency)

2、Maven坐标主要组成:

  • groupId:定义当前Maven项目隶属组织名称(通常是公司域名反写,例如: com.baidou)
  • artifactId:定义当前Maven项目名称(通常是模块名称)
  • version:定义当前项目的版本号(SNAPSHOP快照版本,RELEASE稳定版本 )

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UiLBL4dO-1667221049229)(Maven笔记.assets/image-20220522074354082.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9r6sfpqC-1667221049229)(Maven笔记.assets/image-20220522074459026.png)]


3.5 使用IDEA创建Maven普通项目


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-19Q76VPs-1667221049230)(Maven笔记.assets/image-20220522083622729.png)]

maven项目结构详解:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JZ7yiDug-1667221049230)(Maven笔记.assets/image-20220522090608086.png)]

可以在IDEA安装一个MavenHelper,简化Maven的使用。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FNq6zJWA-1667221049231)(Maven笔记.assets/image-20220522093901508.png)]


3.6 使用IDEA导入Maven项目

1、选择右侧Maven面板,点击号。

2、选中对应项目的pom.xml文件,双击即可。

3、如果没有Maven面板,选择View → Appearance > Tool Window Bars即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-foCZ4fFe-1667221049232)(Maven笔记.assets/image-20220522085105320.png)]


3.7 使用IDEA构建Maven Web项目


1、创建一个Maven-Web项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2pCsLtui-1667221049232)(Maven笔记.assets/image-20220522091847929.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nReBAZTj-1667221049233)(Maven笔记.assets/image-20220522092334423.png)]

2、向pom.xml中引入Tomcat插件,并刷新依赖

<build>
    <plugins>
        <!-- Tomcat插件 -->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <port>8080</port> <!-- 访问端口 -->
                <path>/</path>    <!-- 访问路径 -->
            </configuration>
        </plugin>
    </plugins>
</build>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rzW24nb1-1667221049233)(Maven笔记.assets/image-20220522093115861.png)]


3、启动Tomcat

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-43QckJOv-1667221049234)(Maven笔记.assets/image-20220522094241309.png)]

控制台出现如下结果表示启动成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NF1vG7JR-1667221049235)(Maven笔记.assets/image-20220522094320414.png)]


4、测试访问 http://127.0.0.1:8080

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CdstCz12-1667221049235)(Maven笔记.assets/image-20220522094416009.png)]

3.8 使用Maven构建SpringBoot项目


Maven 的配置:

<!--阿里云镜像源-->
<mirrors>
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
</mirrors>
 
<!--切换jdk编译版本-->	
<profiles>
    <profile>
        <id>jdk-1.8</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <jdk>1.8</jdk>
        </activation>
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        </properties>
    </profile>
</profiles>

1、 创建一个普通Maven项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aM5NFsDw-1667221734518)(Maven笔记.assets/image-20211214202600241.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UvIZ28OZ-1667221049236)(Maven笔记.assets/image-20211214203425845.png)]

2、向 pom.xml 文件中引入依赖

<!--父级依赖-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.4.RELEASE</version>
</parent>


<dependencies>
    <!--web模块-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IR0rA0lU-1667221049237)(Maven笔记.assets/image-20211214204402298-1639492010634.png)]

ok已经成功将依赖导入到项目中!


3、创建一个入口程序,用于启动SpringBoot应用程序

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * SpringBoot启动类
 */
@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class,args);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lRfv03HO-1667221049238)(Maven笔记.assets/image-20211214214313913.png)]


4、编写业务

package com.baidou.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello() {
        return "你好 SpringBoot!!!";
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OjDQxi2K-1667221049239)(Maven笔记.assets/image-20211214210536049.png)]


5、测试运行

执行启动类中的main方法便可以运行这个springboot应用:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iZTYdOk4-1667221049239)(Maven笔记.assets/image-20211214215609802.png)]

ok项目已经启动成功啦!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5KHR0PpM-1667221049240)(Maven笔记.assets/image-20211214214543382.png)]


测试访问:http://localhost:8080/hello

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WEwj0nUk-1667221049240)(Maven笔记.assets/image-20211214215400085.png)]


6、简化配置,在resources目录中创建一个application.properties文件

# 修改tomcat服务器的端口号
server.port=8089

重新启动项目,并测试 http://localhost:8089/hello


7、简化部署

向pom.xml引入打包插件,这样就可以将项目打成jar包,然后部署到服务器上啦。

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8qc0QV5N-1667221049241)(Maven笔记.assets/image-20211214221006548.png)]

点击右侧的maven->Lifecycle->package:(maven打包操作)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QKvmG7VZ-1667221049241)(Maven笔记.assets/image-20211214221235552.png)]

然后target目标目录中便会自动生成该项目的jar包;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PkNTB1vZ-1667221049242)(Maven笔记.assets/image-20211214221424702.png)]


运行jar文件:java -jar xxx.jar

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WC7E7Shv-1667221049242)(Maven笔记.assets/image-20211214221958991.png)]



四、依赖管理


4.1 使用坐标导入jar包


Maven中央仓库:https://mvnrepository.com

1、在pom.xml中编写<dependencies>标签。

2、在<dependencies>标签中使用<dependency>引入坐标。

3、定义坐标的groupldartifactldversion

4、点击刷新按钮,使坐标生效。


4.2 依赖范围


依赖范围(scope)指的是该jar包在哪个阶段时才会有效,只要在对应的依赖坐标里配置<scope>标签,便可以控制依赖的作用范围。也就是设置对应jar包的作用范围:编译环境、测试环境、运行环境。(不写的话默认值是compile )

依赖范围指的是坐标的依赖范围,

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13</version>
    <scope>test</scope> <!--只在测试环境有效-->
</dependency>
依赖范围编译有效测试有效运行时有效打包有效例子
compilespring-core
testxxxjunit
providedxxservlet-api
runtimexJDBC驱动
systemxx本地maven仓库 之外的类库

4.3 解决依赖冲突问题


参考文章:https://blog.csdn.net/lovequanquqn/article/details/81627807

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白豆五

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值