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是一种锦上添花的手段,如果掌握不好,就全部默认值 --\> \

相关推荐
不会代码的小猴3 小时前
Linux环境编程第六天笔记--system-V IPC
linux·笔记
Hx_Ma163 小时前
SpringMVC框架提供的转发和重定向
java·开发语言·servlet
乌恩大侠4 小时前
【笔记】USRP 5G 和 6G 参考架构
笔记·5g
biuyyyxxx4 小时前
Python自动化办公学习笔记(一) 工具安装&教程
笔记·python·学习·自动化
期待のcode4 小时前
原子操作类LongAdder
java·开发语言
舟舟亢亢5 小时前
Java集合笔记总结
java·笔记
小酒窝.5 小时前
【多线程】多线程打印ABC
java
丝斯20115 小时前
AI学习笔记整理(66)——多模态大模型MOE-LLAVA
人工智能·笔记·学习
乡野码圣5 小时前
【RK3588 Android12】RCU机制
java·jvm·数据库
JAVA+C语言5 小时前
如何优化 Java 多主机通信的性能?
java·开发语言·php