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.在命令行中通过命令执行

相关推荐
wjs2024几秒前
Perl 错误处理
开发语言
楼田莉子2 小时前
C++学习:C++11介绍及其新特性学习
开发语言·c++·学习·stl·visual studio
李贺梖梖2 小时前
DAY23 单例设计模式、多例设计模式、枚举、工厂设计模式、动态代理
java
不枯石2 小时前
Matlab通过GUI实现点云的随机一致性(RANSAC)配准
开发语言·图像处理·算法·计算机视觉·matlab
武昌库里写JAVA2 小时前
Java设计模式之工厂模式
java·vue.js·spring boot·后端·sql
牛马的人生3 小时前
MATLAB模块库入门:提升你的工程分析效率
开发语言·其他·matlab
光电笑映4 小时前
C++list全解析
c语言·开发语言·数据结构·c++·list
赛姐在努力.4 小时前
SpringMVC中的常用注解及使用方法
java·spring
恋猫de小郭5 小时前
Fluttercon EU 2025 :Let‘s go far with Flutter
android·开发语言·flutter·ios·golang
让我上个超影吧5 小时前
黑马点评秒杀优化和场景补充
java