【JavaWeb】Maven(上)

1 Maven概述

1.1 什么是Maven

Maven 是一款用于管理和构建Java项目的工具,是Apache旗下的一个开源项目 。

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

2 Maven的作用

注:Maven环境的配置及项目的创建我们在下一部分讲,首先看一下Maven的作用

1.依赖管理:方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题。

2.项目构建:Maven 还提供了标准化的跨平台的自动化构建方式

3.统一项目结构:Maven 也提供了标准、统一的项目结构

2.1 依赖管理

2.1.1 使用maven前

我们项目中要想使用某一个jar包,就需要把这个jar包从官方网站下载下来,然后再导入到项目中。然后在这个项目中,就可以使用这个jar包了。

JAR(Java Archive)包是一种用于聚合多个文件(如 Java 类文件、资源文件等)到一个压缩文件(通常使用 ZIP 格式)中的文件格式。JAR 包的主要用途包括:

分发 Java 应用程序:将所有相关的类文件和资源文件打包成一个 JAR 包,便于分发。

复用和共享代码:将常用的库或模块打包成 JAR 包,方便在其他项目中引用。

提高加载速度:JAR 包可以直接通过 Java 虚拟机加载,无需逐个加载文件。

2.1.2 使用maven后

当使用maven进行项目依赖(jar包)管理,则很方便的可以解决这个问题。 我们只需要在maven项目的pom.xml文件中,添加一段如下的配置即可实现。

 <dependencies>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.16.1</version>
        </dependency>
    </dependencies>

2.2 项目构建

如果我们开发了一套系统,代码需要进行编译、测试、打包、发布等过程,这些操作是所有项目中都需要做的,如果反复进行就显得特别麻烦,而Maven提供了一套简单的命令来完成项目构建。

通过Maven中的命令,就可以很方便的完成项目的编译(compile)、测试(test)、打包(package)、发布(deploy) 等操作。

2.3 统一项目结构

2.3.1 使用maven前

由于java的开发工具有很多,除了大家熟悉的IDEA以外,还有像早期的Eclipse、MyEclipse。而不同的开发工具,创建出来的java项目的目录结构是存在差异的,那这就会出现一个问题:Eclipse创建的java项目,并不能直接导入IDEA中;IDEA创建的java项目,也没有办法直接导入到Eclipse中。

2.3.2 使用maven后

而如果我们使用了Maven这一款项目构建工具,它给我们提供了一套标准的java项目目录,也就是说,无论我们使用的是什么开发工具,只要是基于maven构建的java项目,最终的目录结构都是相同的。 这样,我们使用Eclipse、MyEclipse、IDEA创建的maven项目,就可以在各个开发工具直接直接导入使用了,更加方便、快捷

2.4 Maven模型

  • 构建生命周期/阶段(Build lifecycle & phases)
  • 项目对象模型(Project Object Model)
  • 依赖管理模型(Dependency)

2.4.1 构建生命周期/阶段

图中紫色框起来的部分,就是用来完成标准化构建流程 。当我们需要编译,Maven提供了一个编译插件供我们使用;当我们需要打包,Maven就提供了一个打包插件供我们使用等。

2.4.2 项目对象模型

图中紫色框起来的部分属于项目对象模型,就是将我们自己的项目抽象成一个对象模型,有自己专属的坐标

坐标,就是资源(jar包)的唯一标识,通过坐标可以定位到所需资源(jar包)位置。

就像3.1.2中的代码,坐标的组成部分有:

  • groupId: 组织名

  • arfitactId: 模块名

  • Version: 版本号

2.4.3 依赖管理模型

图中绿色框起来的部分属于依赖管理模型,是使用坐标来描述当前项目依赖哪些第三方jar包。

之前我们项目中需要jar包时,直接就把jar包复制到项目下的lib目录,而现在我们只需要在pom.xml中配置依赖的配置文件即可。 而这个依赖对应的jar包其实就在我们本地电脑上的maven仓库中。

2.5 Maven仓库

仓库的本质就是一个目录(文件夹),这个目录被用来存储开发中所有依赖(就是jar包)和插件

Maven仓库分为:

  • 本地仓库:自己计算机上的一个目录(用来存储jar包)

  • 中央仓库:由Maven团队维护的全球唯一的。仓库地址:https://repo1.maven.org/maven2/

  • 远程仓库(私服):一般由公司团队搭建的私有仓库

3 Maven的安装及使用

3.1 下载Maven

下载地址:https://maven.apache.org/download.cgi

这里我下载的是3.9.4版本的,选择下载最新版本即可

3.2 安装Maven

Maven安装配置步骤:

  1. 解压安装

  2. 配置仓库

  3. 配置阿里云私服

  4. 配置Maven环境变量

1) 解压 apache-maven-3.9.4-bin.zip(解压即安装)

建议解压到没有中文、特殊字符的路径下。

2) 配置本地仓库

1.在自己计算机上新一个目录(本地仓库,用来存储jar包)

2.进入到conf目录下修改settings.xml配置文件

使用超级记事本或者Sublime Test,打开settings.xml文件,定位到53行

复制<localRepository>标签,粘贴到注释的外面(55行)

复制之前新建的用来存储jar包的路径,替换掉<localRepository>标签体内容

3) 配置阿里云私服

由于中央仓库在国外,所以下载jar包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的jar包。

进入到conf目录下修改settings.xml配置文件: 使用超级记事本或者Sublime Test,打开settings.xml文件,定位到160行左右,在<mirrors>标签下为其添加子标签<mirror>,内容如下:

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

4) 配置环境变量

Maven环境变量的配置类似于JDK环境变量配置一样

1.在系统变量处新建一个变量MAVEN_HOME。 MAVEN_HOME环境变量的值,设置为maven的解压安装目录,如:D:\Maven\apache-maven-3.9.4-bin\apache-maven-3.9.4

注:不要写成包的目录,是其下一级没有bin后缀的目录

2.在Path中进行配置。 PATH环境变量的值,设置为:%MAVEN_HOME%\bin

3.win + r 并输入cmd打开DOS命令提示符进行验证,输入命令符 mvn -v ,出现如图所示表示安装成功 。

5) 配置关联的JDK版本(可选)

进入到conf目录下修改settings.xml配置文件,在 <profiles> </profiles>中增加如下配置:

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

4 IDEA继承Maven

4.1 创建Maven项目

4.1.1 老版本中Maven项目的创建

在2021版本的idea中,Maven项目的创建如同Java项目创建一样,依旧是 文件 => 新建  => 项目 只不过在新建项目时创建的时maven项目

 然后命名项目点击完成即可创建,创建之后点击 项目结构

再选择 模块 并应用即可

4.1.2 新版本中Maven项目的创建

学习IDEA集成Maven时,建议用新版本的IDEA,这里以2024版本为例

首先在file中点击close project关闭当前项目,进入欢迎界面

而后选择Customise => All settings => Build,Execution,Deployment  =>  Build Tools  =>  Maven

如同选择正确的文件目录

然后点击左侧runner,选择下载好的JRE版本

接着点击Compliter => Java Compliter 配置编译版本

这里所设置的maven的环境信息,并未指定任何一个project,此时设置的信息就属于全局配置信息。 以后,我们再创建project,默认就是使用我们全局配置的信息。

4.1.3创建项目

创建一个空项目并命名

创建好之后在file中选择project structure设置JDK版本号然后点击apply应用

接着创建Maven模块

在main中创建hello类输出Hello Maven

4.2 pom文件详解

POM (Project Object Model) :指的是项目对象模型,用来描述当前的maven项目。

使用pom.xml文件描述当项目

<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId>
    <artifactId>maven-exp-project01</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--项目JDK版本及编码-->
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>

pom文件详解:

  • <project> :pom文件的根标签,表示当前maven项目

  • <modelVersion>:声明项目描述遵循哪一个POM模型版本

    • 虽然模型本身的版本很少改变,但它仍然是必不可少的。目前POM模型版本是4.0.0

  • 坐标 :

    • <groupId> <artifactId> <version>

    • 定位项目在本地仓库中的位置,由以上三个标签组成一个坐标

  • <maven.compiler.source> :编译JDK的版本

  • <maven.compiler.target> :运行JDK的版本

  • <project.build.sourceEncoding> : 设置项目的字符集

4.3 Maven坐标

什么是坐标?

Maven中的坐标是资源的唯一标识 , 通过该坐标可以唯一定位资源位置

使用坐标来定义项目或引入项目中需要的依赖

Maven坐标主要组成:

groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:org.example)

artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)

version:定义当前项目版本号

SNAPSHOT: 功能不稳定、尚处于开发中的版本,即快照版本

RELEASE: 功能趋于稳定、当前更新停止,可以用于发行的版本

4.4 Maven项目的导入

在IDEA中导入maven项目有两种方式

4.4.1 方式一

File -> Project Structure -> Modules -> Import Module -> 选择maven项目的pom.xml。

4.4.2 方式二

Maven面板 -> +(Add Maven Projects) -> 选择maven项目的pom.xml。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值