8.4 Java Web(Maven P50-P57)

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

Maven的作用

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

2.统一项目结构:提供标准、统一的项目结构

3.项目构建:标准跨平台(Linux、Windows、MacOS)的自动化项目构建方式

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

Maven的安装

1.解压apache-maven-3.6.1-bin.zip

2.配置本地仓库:修改conf/settings.xml中的<localRepository>为一个指定目录

<localRepository>/"D:\Maven\apache-maven-3.9.11\mvn_repo"</localRepository>

3.配置阿里云私服:修改conf/settings.xml中的<mirrors>标签,为其添加如下子标签

4.配置环境变量:MAVEN_HOME为maven的解压目录,并将其bin目录添加到PATH环境变量

IDEA集成Maven

网上找教程即可,特别注意两点:

1.阿里云私服的<mirror>标签内容有修改,要去找最新版,否则无法找到远程仓库

2.复制文件地址时(本地仓库地址),会在地址两边加" ",要记得去掉" ",否则地址报错

Maven坐标

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

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

Maven坐标的组成:

1.groupId:定义当前Maven项目隶属组织名称(如com.itheima)

2.artifactId:定义当前Maven项目名称(模块名称)

3.version:定义当前项目版本号

Maven依赖管理

依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖

依赖配置

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

2.在<dependencies>标签中使用<dependecy>引入坐标

3.定义坐标的groupId,artifactId,version

4.点击刷新按钮,引入最新加入的坐标

XML 复制代码
    <!--依赖配置-->
    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.5.18</version>
        </dependency>
    </dependencies>

依赖传递

依赖具有传递性,依赖分为直接依赖和间接依赖

有以下三个maven项目,分别为maven_projectA、maven_projectB、maven_projectC

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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.itheima</groupId>
    <artifactId>maven_projectA</artifactId>
    <version>1.0-SNAPSHOT</version>


    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.5.18</version>
        </dependency>

        <dependency>
            <groupId>com.itheima</groupId>
            <artifactId>maven_projectB</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>
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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.itheima</groupId>
    <artifactId>maven_projectB</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
        </dependency>

        <dependency>
            <groupId>com.itheima</groupId>
            <artifactId>maven_projectC</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>


</project>
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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.itheima</groupId>
    <artifactId>maven_projectC</artifactId>
    <version>1.0-SNAPSHOT</version>


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


</project>

可以查看其依赖关系

如果A只想依赖B,而不想要间接依赖B的依赖资源,可以排除依赖,排除依赖指主动断开依赖的资源,被排除的资源无需指定版本,例如这里A不想要junit依赖

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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.itheima</groupId>
    <artifactId>maven_projectA</artifactId>
    <version>1.0-SNAPSHOT</version>


    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.5.18</version>
        </dependency>

        <dependency>
            <groupId>com.itheima</groupId>
            <artifactId>maven_projectB</artifactId>
            <version>1.0-SNAPSHOT</version>
            <!-- 排除依赖-->
            <exclusions>
                <exclusion>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

</project>

依赖范围

以来的jar包默认情况下可以在任何地方使用,可以通过<scope></scope>设置其作用范围

1.主程序范围有效(main文件夹范围内)

2.测试程序范围有效(test文件夹范围内)

3.是否参与打包运行(package指令范围内)

生命周期

对所有的maven项目构建过程进行抽象和统一,Maven中有3套独立的生命周期

1.clean:清理工作

2.default:核心工作,如:编译、测试、打包、安装、部署等

3.site:生成报告、发布站点等

每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段

主要的生命周期阶段

1.clean:移除上一次构建生成的文件

2.compile:编译项目源代码

3.test:使用合适的单元测试框架运行测试(junit)

4.package:将编译后的文件打包,如:jar、war等

5.install:安装项目到本地仓库

在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行

执行指定生命周期的两种方式

1.在IDEA右侧的maven工具栏中,选中对应的生命周期,双击运行

2.在命令行中通过命令执行

相关推荐
22:30Plane-Moon12 分钟前
初识SpringBoot
java·spring boot·后端
黄昏晓x1 小时前
数据结构----排序
java·数据结构·排序算法
97zz1 小时前
项目配置文件正确但是启动失败,报配置文件内容错误或中间件地址与实际不符
java·中间件·springboot
奔波霸的伶俐虫2 小时前
jeecg框架@Dict不生效问题
开发语言·python
小醉你真好2 小时前
Spring Boot + ShardingSphere 分库分表实战
java·spring boot·后端·mysql
Vdeilae2 小时前
IIS 让asp.net core 项目一直运行
java·服务器·asp.net
cc蒲公英3 小时前
uniapp x swiper/image组件mode=“aspectFit“ 图片有的闪现后黑屏
java·前端·uni-app
刘大辉在路上3 小时前
IntelliJ IDEA开发编辑器摸鱼看股票数据
java·编辑器·intellij-idea
我来整一篇3 小时前
[mysql] 深分页优化
java·数据库·mysql