Maven介绍
Maven是apache旗下的一个开源项目
是一款用于管理和构建java项目的工具
Maven 在后端开发中扮演着重要的角色,特别是在 Java 后端开发中。以下是 Maven 和后端开发的关系:
- 依赖管理: 后端开发通常需要使用各种第三方库和框架来实现功能,例如数据库连接库、Web 框架、安全框架等。Maven 可以帮助管理这些依赖关系,简化了在项目中使用第三方库的过程,同时也确保了依赖库的版本管理和一致性。
- 项目构建: 后端项目通常会包含大量的代码文件、配置文件和资源文件,而 Maven 可以帮助自动化项目的构建过程。通过 Maven,开发人员可以定义项目的构建规则和步骤,包括编译源代码、打包可执行文件、生成文档等,从而简化了项目的构建过程。
- 标准化项目结构: Maven 规定了一套标准的项目结构,这使得后端项目更易于理解和维护。遵循 Maven 的约定,开发人员可以将后端项目组织成一组标准的目录结构,包括源代码目录、资源目录、测试目录等,从而提高了项目的可读性和可维护性。
- 插件支持: Maven 拥有丰富的插件生态系统,提供了各种各样的插件来扩展其功能。后端开发人员可以利用这些插件来实现自动化部署、持续集成、代码质量检查等功能,从而提高了开发效率和代码质量。
- 团队协作: Maven 提供了一种统一的项目管理和构建工具,可以帮助团队成员更好地协作。通过 Maven,团队成员可以共享项目配置文件、依赖信息和构建规则,确保了项目在不同开发环境中的一致性和稳定性。
综上所述,Maven 在后端开发中发挥着重要作用,它简化了项目的管理和构建过程,提高了开发效率和代码质量,同时也促进了团队协作和项目的可维护性。
maven这款工具
我们只需要创建一个maven工程
当我们配置完成后
maven会自动联网下载依赖
然后我们在项目中就能直接使用了
不同的Java开发工具项目结构是不同的
我们在IDEA写的项目不能直接导入eclipse中
如果使用了Maven能解决
因为Maven为我们提供了统一的项目结构
在Maven中提供了一套标准化的项目构建方式
我们所开发的Java项目如果要运行时
要用Javac编译 再进行测试 打包 发布项目
Maven将其标准化 构建了一套标准化的操作流程
小结
模型
构建生命周期的各个阶段
我们可以根据插件来实现各种功能
这样我们就可以完成maven项目标准化的构建
项目对象模型POM
指可以通过POM.XML这个配置文件来完成一小部分的工程
依赖资源 也可以进行配置
私服可能公司里所有同事都连接这个仓库
只要有一个同事用到了架包
架包就能从中央仓库下载到远程仓库私服
这样其他同事就不用再连接中央仓库了
Maven安装
官方网站
1.解压安装
bin目录存放的是可执行文件
项目的编译 打包 等一系列指令
conf目录里放的是配置文件
lib里放的是maven里的架包资源
2.配置本地仓库
修改配置文件
将第53行复制出来
并且还要指定本地仓库的地址
这里我直接放到桌面上便于管理
3.配置阿里云的私服 以便加速架包的下载
<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
4.配置系统环境变量
这样就可以在任意目录下使用maven
我们先复制maven的安装目录
我的是
C:\Users\ZDY\Desktop\maven-3.9.6
然后再此电脑右键 属性 高级系统设置
点击环境变量
变量名为 maven的安装目录
接下来还要在path环境变量中
将maven下的bin目录加到环境变量中
这就代表我们要将maven安装目录下的bin加到path环境变量
这样我们在任意目录下就可以使用maven
测试是否安装成功
如果能看到版本就代表maven已经配置成功
IDEA配置Maven环境
绝大部分时候都是在IDEA中集成Maven进行使用
创建一个空项目
并且配置项目结构
随后就是配置Maven
手动去添加
再去设置配置和本地仓库
配置JRE
修改字节码版本
当然也可以一劳永逸
可以直接配置全局变量
直接设置所有的IDEA项目中所有的Maven配置
IDEA创建Maven项目
这样就得到了
main目录下面存放的是项目的资源 java是源代码 resources是配置文件
test目录下面存放的是 测试的资源 java是源代码
并不需要配置资源所以并不会生成 当然我们也可以自己生成
测试
其中target文件夹里放的就是字节码文件
Maven的坐标
IDEA导入Maven项目
依赖配置
修改配置文件
注意要刷新
添加成功
安装插件可以帮助我们查找依赖
<?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>org.example</groupId> <artifactId>untitled</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!--依赖配置--> <dependencies> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> </dependencies> </project>
小结
依赖传递
其实我们引入这一个架包
其他两个架包也会被引入
这就叫依赖传递
打开A项目的pom文件
A项目依赖B项目只需要通过依赖配置的方式依赖B项目的坐标
C项目依赖了一个工具包commons-io
打开Maven面板查看架构 会自动构建
IDEA里有一个可视化依赖传递的功能
可以打开 显示 可视图
排除依赖
A虽然依赖B 但是B中的junit就不会出现在A里
依赖范围
我们用一个标签scope来控制作用范围
举例
这样主程序就不能使用logback的依赖
只有测试中可以用
打包架包时打开目录时就不会包含logback的依赖
生命周期
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一
就是描述项目的构建要经历哪些阶段
项目清理 项目编译 项目打包 项目部署
每一套生命周期都有一套体系 分为各个阶段
在一套生命周期运行后面的阶段进行项目的构建 前面的阶段也会运行
生命周期的各个阶段的执行方式
实际操作
跳过某一阶段
这样的话日志中会打印
用命令行执行maven指令
实际上Maven的生命周期和生命周期的各个阶段都是抽象的概念
他并不执行具体操作
具体操作是与Maven绑定的各种插件来执行的
因为Maven本质是一个插件执行框架
所有的操作都是插件来执行的、