news 2026/5/15 16:59:30

Maven 学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Maven 学习

目录

一、Maven学习

1、Maven中的dependencyManagement和dependencies区别

2、maven作用

3、maven插件-assembly

4、 标签

二、@RequestBody注解的作用


一、Maven学习

1、Maven中的dependencyManagement和dependencies区别

Maven中使用dependencyManagement元素来提供一种管理依赖版本号的方式。

通常会在一个组织或者项目的最顶层的父POM中看到dependencyManagement元素。

使用pom.xml中的dependencyManagement元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用这个dependencyManagement元素中指定的版本号。

好处是:如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号,这样当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目的修改;另外如果某个子项目需要另外的一个版本,只需要声明version就可。

dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。

如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;

如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

Idea中Maven仓库选择

setting文件中路径可修改

<localRepository>D:/repo</localRepository>

Maven官网下载.zip版软件 Maven官网下载

下载完直接解压

1.配置环境变量M2_HOME

2. 在path变量的最后面加上 ;%M2_HOME%\bin注意:%号前面的;号不能扔掉

cmd 命令 mvn -version

出现maven版本即配置成功。

2、maven作用

1 . 帮你下载jar包
maven项目会有一个 pom.xml文件, 在这个文件里面,只要你添加相应配置,
他就会自动帮你下载相应jar包,不用你铺天盖地的到处搜索你需要的jar包了
2 . 寻找依赖,帮你下载依赖
3 . 热部署,热编译
意思就是,在你web项目已经运行的时候,修改代码的能直接被web服务器所接受,就不需要你重启服务器了,或者重新部署代码了,而且你可以直接通过maven 打包war或者jar项目。

3、maven插件-assembly

Maven有三种打包方式,分别为:

  • assembly:自定义的打包结构,也可以定制依赖项等;把项目打包成可执行的jar
  • jar:默认的打包方式,用来打普通的project JAR包;
  • shade:用来打可执行jar包,也就是所谓的fat JAR包。

maven-assembly-plugin是Maven中一个强大的插件,用于将项目及其依赖项、资源文件等打包成自定义的分发包(如ZIP、TAR、JAR等格式)

什么是Assembly?
“assembly”是把一组文件、目录、依赖元素组装成一个归档文件. 比如, 假设一个 Maven project定义了一个JAR artifact,它包含控制台应用程序和Swing应用程序 。这样一个工程可以定义两套包含描述符,一套给给控制台应用,另一套给Swing应用程序,它们包含各自的脚本、目录和依赖。
Assembly Plugin的描述符可以定义任何一个文件或者目录归档方式。举个例子,如果的你的Maven 2工程包含”src/main/bin”这个目录,你可以指示Assembly插件复制“src/main/bin”目录下所有的文件到bin目录里(归档文件里的目录),并且可以修改它们的权限属性(UNIX mode)。

在pom.xml 文件里面的配置说明

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.6.0</version> <executions> <!--执行器 mvn assembly:assembly--> <execution> <id>make-zip</id><!--名字任意 --> <phase>package</phase><!-- 绑定到package生命周期阶段上 --> <goals> <goal>single</goal><!-- 只运行一次 --> </goals> <configuration> <descriptors> <!--描述文件路径--> <descriptor>src/main/resources/zip.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin>
  • shade打包官方教程:https://maven.apache.org/plugins/maven-shade-plugin/examples/attached-artifact.html;
  • jar打包官方教程: https://maven.apache.org/shared/maven-archiver/examples/classpath.html;
  • assembly打包官方教程:https://maven.apache.org/plugins/maven-assembly-plugin/examples/single/filtering-some-distribution-files.html

Maven的三种打包方式(jar、shade、assembly)

4、<resources>标签

在 Maven 项目中,<resources> 标签用于配置哪些非 Java 源文件(如配置文件、静态资源等)需要被打包到最终的构建输出(通常是 target/classes)中。默认情况下,Maven 会自动处理 src/main/resources 目录下的内容,但若需自定义资源路径、启用变量替换(filtering)或包含其他目录(如 src/main/java 中的 XML 文件),则需显式配置 <resources>

核心作用

  • 指定资源目录‌:告诉 Maven 哪些目录下的文件应被包含在打包结果中。
  • 启用变量替换(filtering)‌:将资源文件中的占位符(如${property})替换为pom.xml中定义的属性值。
  • 精细控制包含/排除文件‌:通过<includes><excludes>精确筛选需要处理的文件。
<build> <resources> <resource> <directory>src/main/resources</directory> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build>

二、@RequestBody注解的作用

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的),所以只能发送POST请求。

GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。

在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

注:一个请求,只有一个RequestBody;一个请求,可以有多个RequestParam。

jQuery中,$.ajax()默认发送的参数类型及编码为:application/x-www-form-urlcoded,而@RequestBody处理的参数类型及编码为:aplication/json或者是application/xml,通过contentType属性来指定

在传递之前,对JSON对象要使用JSON.stringify(),JSON.stringify() 方法将一个 JavaScript 值(对象或者数组)转换为一个 JSON 字符串

后端@RequestBody注解对应的类在将HTTP的输入流(含请求体)装配到目标类(即:@RequestBody后面的类)时,会根据json字符串中的key来匹配对应实体类的属性,如果匹配一致且json中的该key对应的值
符合(或可转换为)实体类的对应属性的类型要求时,会调用实体类的setter方法将值赋给该属性。

注:当同时使用@RequestParam()和@RequestBody时,@RequestParam()指定的参数可以是普通元素、数组、集合、对象等等(@RequestBody 与@RequestParam()可以同时使用时,原SpringMVC接收参数的机制不变,只不过RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)。

天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 12:04:15

LeetCode热题100-随机链表的复制

给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点的值。新节点的 ne…

作者头像 李华
网站建设 2026/5/13 11:57:19

小满nestjs(第二十五章 NestJS ORM实战:TypeORM连接MySQL与实体映射)

1. TypeORM连接MySQL的完整配置指南 第一次在NestJS项目中使用TypeORM连接MySQL时&#xff0c;我踩了不少坑。记得当时因为一个简单的端口配置错误&#xff0c;折腾了大半天才成功连接。现在回想起来&#xff0c;其实只要掌握几个关键配置项&#xff0c;整个过程可以非常顺畅。…

作者头像 李华
网站建设 2026/5/15 16:59:30

3种高效转换方案:stltostp工具的工业级STL到STEP转换完全指南

3种高效转换方案&#xff1a;stltostp工具的工业级STL到STEP转换完全指南 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在三维设计与制造的数字工作流中&#xff0c;工程师们面临着一个普遍的…

作者头像 李华
网站建设 2026/5/13 11:57:05

STM32F103 TIM3四路PWM驱动舵机与LED调光实战:一份代码搞定两种应用

STM32F103 TIM3四路PWM驱动舵机与LED调光实战&#xff1a;一份代码搞定两种应用 在嵌入式开发中&#xff0c;PWM&#xff08;脉冲宽度调制&#xff09;技术是实现电机控制、LED调光等功能的基石。STM32F103系列微控制器内置的定时器模块&#xff0c;特别是TIM3定时器&#xff0…

作者头像 李华