maven笔记

maven介绍和作用

Maven 是一款为 Java 项目构建管理、依赖管理的工具(软件),使用 Maven 可以自动化构建、测试、打包和发布项目,大大提高了开发效率和质量。

主要作用的理解:

依赖管理:

在编写项目时我们需要许多第三方依赖,有maven后子需要将依赖项的信息编写到Maven工程的配置文件,Maven软件会自动下载并复制这些依赖到项目中,也会自动下载依赖所需要的依赖(确保依赖版本无误)

构建管理:

项目开发后想要将项目打包成.war文件,并部署到服务器中运行;使用maven可以通过一行构建命令(mvn package)快速构建和打包

idea 也可以构建项目,为什么要使用 maven 呢?

原因1:maven构建触发方便

原因2:开发项目的软件有很多,每个软件的项目结构都不相同,使用maven构建可以统一结构

Packaging定义规则:

指示将项目打包为什么类型的文件,idea根据packaging值,识别maven项目类型!

packaging 属性为 jar(默认值),代表普通的Java工程(Java类文件,资源文件),打包以后是.jar结尾的文件。

packaging 属性为 war,代表Java的web工程(Java文件,jsp文件,html/cssjs文件,配置文件),打包以后.war结尾的文件。

packaging 属性为 pom,代表不会打包,用来做继承的父工程。

依赖管理

<?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>

<!--gavp属性,不会改变-->

<groupId>com.atguigu</groupId>

<artifactId>maven-javase-project-02</artifactId>

<!--构建过程,部署时修改-->

<version>1.0-SNAPSHOT</version>

<!--maven工程的打包方式 java jar[默认值]; web war; 不打包 pom-->

<packaging>war</packaging>

<!--第三方依赖信息

dependencies -项目依赖信息的集合

dependency -每个依赖项

gav\] -依赖的信息就是其他被打包成maven的工程(该工程被打包成jar) 如何知道第三方依赖的信息呢? 1 使用官网查询 [http://mvnrepository.com](http://mvnrepository.com "http://mvnrepository.com") 2 使用插件 maven-search 点击tools(工具) -maven-search 直接搜索插件即可 扩展: 1 提取版本号统一管理(自定义一个标签提取版本号到该标签)------------------------properties\<\>中设置 2 可选属性scope------------------设置在dependency中(标明依赖可以使用的范围) scope------------引入依赖的作用 默认是compile 代表该依赖可以在main中使用,也可以在test中使用,在打包和运行时都有效 设置为test 该依赖只能在test中使用(例如单元测试方法的依赖) 设置为runtime main中不会用,test不会用 在打包和运行时会使用(一般是反射的时候使用) 例如:mysql Class.format(com.mysql.cj.jdbc.Driver) 设置为provided 在main中会使用,在test中会使用,在打包和运行时会使用 例如:Servlet 总结:scope是一种锦上添花的手段,如果掌握不好,就全部默认值 --\> \

相关推荐
你不是我我1 小时前
【Java 开发日记】HTTP3 性能更好,为什么内网微服务依然多用 HTTP2?HTTP2 内网优势是什么?
java·开发语言·微服务
雪碧聊技术1 小时前
大模型爆火!Java后端如何抓住Agent全栈开发的风口
java·大模型·agent·全栈开发
贺一航【Niki】1 小时前
【学习笔记】杂乱知识
笔记·学习
つ安静与叛逆的小籹人2 小时前
小红书API:通过笔记ID获取笔记详情数据教程
笔记·python
逻辑驱动的ken2 小时前
Java高频面试场景题25
java·开发语言·深度学习·面试·职场和发展
AI人工智能+电脑小能手3 小时前
【大白话说Java面试题】【Java基础篇】第32题:Java的异常处理机制是什么
java·开发语言·后端·面试
ClutchoQ4 小时前
【你指的API是哪个API?软件工程师跨服聊天实录】
笔记·其他
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ5 小时前
通过java后端代码来实现给word内容补充格式文本内容控件,以及 设置控件的标记和标题
java·c#·word
無限進步D5 小时前
Java 面向对象高级 接口
java·开发语言