Maven项目的介绍、入门搭建

article/2025/9/17 2:29:51

Maven项目的介绍、入门搭建

一、什么是Maven项目

Maven 是 Apache 组织下的一个跨平台的项目管理工具,它主要用来帮助实现项目的构建、测试、打包和部署。Maven 提供了标准的软件生命周期模型和构建模型,通过配置就能对项目进行全面的管理。它的跨平台性保证了在不同的操作系统上可以使用相同的命令来完成相应的任务。Maven 将构建的过程抽象成一个个的生命周期过程,在不同的阶段使用不同的已实现插件来完成相应的实际工作,这种设计方法极大的避免了设计和脚本编码的重复,极大的实现了复用。

二、使用Maven项目的好处

为什么选择Maven项目,而非普通的Java项目。普通的Java项目如果依赖其他的项目,需要手动把依赖的jar包复制到lib下,而且如果依赖的jar包升级,我们就需要重新复制jar包到lib下,操作麻烦,而且不容易管理。但是使用Maven项目的话,我们只需要在pom文件中维护依赖jar包的坐标即可。帮我们轻松解决了版本不一致,版本冲突,依赖臃肿等问题。

三、创建Maven项目

3.1、安装和配置Java
下载JDK安装包,根据提示进行安装,安装成功后进行环境变量配置,配置成功后,可运行
java -version 校验Java环境是否安装成功。

3.2、安装和配置Maven
下载Maven安装包,根据提示进行安装,安装成功后进行环境变量配置,配置成功后,可运行
maven -version 校验Maven是否安装成功。

3.3、创建Maven项目

3.3.1、创建新项目
打开idea,在主菜单中选择File --> new -->project,创建新项目
创建新项目
3.3.2、选择SDK
在New Project窗口,选择Maven,在Project SDK的下拉列表中选择需要的JDK版本,勾选Create from archetype,选择maven项目,我们常用的就是普通项目(quickstart)和web项目(webapp),本次我们选择普通项目。
选择SDK3.3.3、配置Groupld和ArifactId
Groupld:工程的唯一标志符,一般采用的就是域名倒置的写法比如com.jd.overseamid
ArifactId:项目名称
version:项目版本号
设置Groupld和ArifactId
3.3.4、配置Maven、settings、repository
Maven:选择自己本地配置的Maven版本。
settings:指定settings.xml配置文件。(后面具体解释)
repository:设置本地仓库路径。(后面具体解释)
配置Maven、settings、repository
3.3.5、配置代码存放位置
配置代码存放位置
3.3.6、工程目录
创建成功之后,我们简单看一下Maven的目录结构。Maven为开发者提供了缺省的标准目录模板,好的目录结构可以使开发人员更容易理解项目,为以后的维护工作也打下良好的基础。
工程目录
3.3.7、pom文件
pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项目相关因素,是项目级别的配置文件。
我们创建的项目需要引入一些依赖的包,如果是需要引入公司内部的jar包,找开发要依赖坐标就可以了,如果是外部的依赖,可以在https://mvnrepository.com/ 这个网站进行查找,一般我们会选择最近更新,使用人数比较多的非beta版本。

3.3.8、settings文件
settings文件,一般存在与两个位置:
1.安装的地方:${M2_HOME}/conf/settings.xml

2.用户的目录:${user.home}/.m2/settings.xml

前者又被叫做全局配置,对操作系统的所有使用者生效;后者被称为用户配置,只对当前操作系统的使用者生效。如果两者都存在,它们的内容将被合并,并且用户范围的settings.xml会覆盖全局的settings.xml。
Maven安装后,用户目录下不会自动生成settings.xml,只有全局配置文件。如果需要创建用户范围的settings.xml,可以将安装路径下的settings复制到目录${user.home}/.m2/

Maven默认的settings.xml是一个包含了注释和例子的模板,可以快速的修改它来达到你的要求。
全局配置一旦更改,所有的用户都会受到影响,而且如果maven进行升级,所有的配置都会被清除,所以要提前复制和备份${M2_HOME}/conf/settings.xml文件,一般情况下不推荐配置全局的settings.xml。

3.3.9、仓库
settings文件中还有一个比较重要的配置,就是仓库的配置。
在传统的项目,jar是导入到项目中的,项目的jar包和代码是分开的,Maven的jar包存放在仓库里。仓库分为:本地仓库、远程仓库、私服。
本地仓库,顾名思义,就是Maven在本地存储构件的地方。这个路径是我们自己配置的,配置成自己存放jar包的路径。
远程仓库,中央仓库是默认的远程仓库,Maven在安装的时候,自带的就是中央仓库的配置,远程仓库的地址:http://repo.maven.apache.org/maven2。
私服:私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载。
私服的好处:
1、节省自己的外网带宽:减少重复请求造成的外网带宽消
2、部署第三方构件:有些构件无法从外部仓库获得的时候,我们可以把这些构件部署到内部仓库(私服)中,供内部maven项目使用
3、提高稳定性,增强控制:Internet不稳定的时候,maven构建也会变的不稳定,一些私服软件还提供了其他的功能
我们更新jar包时,先从本地仓库去找,本地没有的话就去私服上找,私服也没有的话,去中央仓库去找。
在这里插入图片描述
作者:喵小姐_王小木
链接:https://www.jianshu.com/p/ad32af2751cf
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


http://chatgpt.dhexx.cn/article/KVOiHQvq.shtml

相关文章

Maven项目详解

目录 一、简介 二、准备工作 1、安装maven (参考文章:maven下载安装详解) 2、配置maven本地仓库 3、中央仓库 4、目录结构 5、POM(Project Object Model) 6、IDE配置 三、Maven项目创建步骤 1、在Eclipse中创…

Maven项目构建

Maven项目构建 一、Maven的介绍1.1 Maven的作用1.2 Maven仓库1.3 Maven目录及配置 二、Maven的使用2.1 Maven 工程的目录结构2.2 pom.xml配置文件 三、Maven多模块项目3.1 创建多模块项目3.2 父模块与子模块pom.xml 一、Maven的介绍 1.1 Maven的作用 Maven 的依赖管理 项目的…

如何使用 Maven 来创建项目(一篇文章就够了)

如何使用 Maven 来创建项目(一篇文章就够了) 1. Maven 简介1. 简介2. 项目构建3. 项目构建工具 2. Maven 的四大特性1. 依赖管理系统版本号规范 2. 多模块构建3. 一致的项目结构4. 一致的构建模型和插件机制 3. Maven 的安装配置和目录结构1. Maven 的安…

IDEA中创建maven项目详细步骤,很清晰

前言 在IDEA中创建Maven项目,前提是已经安装配置好Maven环境 。 如还未配置安装Maven的,请先下载安装。如何下载安装,可参考我另外篇文章: maven的下载与安装教程 本篇教程是以创建基于servlet的JavaWeb项目为例子,如…

深拷贝和浅拷贝

深拷贝和浅拷贝的知识涉及到堆栈的概念。 堆栈的概念: 基本类型: 名值存储在栈内存中,例如: let a 1;引用类型: 名存在栈内存中,值存在于堆内存中,但是栈内存会提供一个引用的地址指向堆内存中的值&…

深拷贝和浅拷贝的区别详解

深拷贝和浅拷贝的作用是复制对象数据,这两者都用于构造拷贝构造函数中,那么这俩之间到底有什么区别呢? 先上答案 - 浅拷贝:简单的赋值拷贝操作 - 深拷贝:在堆区重新申请内存空间,进行拷贝操作 下面举一个…

Python深拷贝与浅拷贝的区别

首先深拷贝和浅拷贝都是对象的拷贝,都会生成一个看起来相同的对象,他们本质的区别是拷贝出来的对象的地址是否和原对象一样,也就是地址的复制还是值的复制的区别。 什么是可变对象,什么是不可变对象: 可变对象是指&am…

详解JS深拷贝与浅拷贝

深拷贝与浅拷贝 深拷贝和浅拷贝都只针对引用数据类型,浅拷贝会对对象逐个成员依次拷贝,但只复制内存地址,而不复制对象本身,新旧对象成员还是共享同一内存;深拷贝会另外创建一个一模一样的对象,新对象跟原对…

c++深拷贝与浅拷贝

浅拷贝:简单的赋值拷贝操作(这个是系统默认提供的) 深拷贝:在堆区重新释放空间,进行拷贝操作(要自己写的) 简单来说,只要类属性里有指针等就必须利用深拷贝操作 为便于深刻理解&a…

实现深拷贝与浅拷贝的方法

深拷贝与浅拷贝概念: 深浅拷贝出现的前提: 应用类型的数据(对象和数组) 深拷贝就是把目标对象里面的数据一个一个都复制下来,创建出一个一模一样的,存放地址不一样,互不影响。就像真假美猴王。改…

深拷贝和浅拷贝的区别及实现方法

文章目录 一、引言二、浅拷贝1.Object.assign()2.concat()3.扩展运算符 三、深拷贝1. 利用json数据和json字符串之间的转换2.$.extend()3. 递归 查阅多篇文章后,自己归纳总结对深拷贝和浅拷贝的理解,不足之处,还望多多指导 一、引言 基本数据…

深拷贝与浅拷贝的区别

深拷贝与浅拷贝是针对对象属性为对象的,因为基本数据类型在进行赋值操作时(也就是深拷贝(值拷贝)),是直接将值赋给了新的变量,也就是该变量是原变量的一个副本,这时,你修…

深拷贝和浅拷贝的区别是什么?

深拷贝和浅拷贝的区别是什么? 1、浅拷贝 (1)、定义 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的浅拷贝会对“主"对象进行拷贝,但不会复制主对象里面的对象。"里面的对象”会在…

深拷贝和浅拷贝常见的实现方式

浅拷贝的实现方式 1. Object.assign()方法 assign()方法是把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象。但是他的拷贝方式不是固定的,看下面的代码演示: let obj {username: kobe}; let obj2 Object.assign({},o…

什么是深拷贝和浅拷贝?以及怎么实现深拷贝和浅拷贝?

拷贝浅是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址,所以如果其中一个对象改变了这个地址,就会影响到…

Java的深拷贝与浅拷贝的区别

1.二者的区别 浅拷贝:在拷贝一个对象时,对对象的基本数据类型的成员变量进行拷贝,但对引用类型的成员变量只进行引用的传递,并没有创建一个新的对象,当对引用类型的内容修改会影响被拷贝的对象。 深拷贝:在…

深拷贝和浅拷贝的区别(必须掌握)

前言: 在面试中,你必须要知道的一个知识点,那就是浅拷贝和深拷贝,那么就必须知道基本数据类型和引用类型,其实深拷贝和浅拷贝的主要区别就是其在内存中的存储类型不同。 网片来自网络(侵删) …

C++的浅拷贝与深拷贝

目录 前言 一、区别 二、浅拷贝 1.简单描述 2.代码实例 三.深拷贝 1.简单描述 2.代码实例 四.完整代码 五.运行结果 总结 前言 C中有两种拷贝:深拷贝和浅拷贝 要是想要运用好拷贝函数就必须清楚深拷贝与浅拷贝的区别 一、区别 1 在未定义拷贝构造函数…

拷贝构造(深拷贝、浅拷贝)

一、概念介绍 拷贝构造:拷贝构造函数,又称构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构造及初始化。 其唯一的形参必须是引用,但并不限制为const,一般普遍的会加上c…

C++——深拷贝和浅拷贝

1.浅拷贝与深拷贝的区别 浅拷贝(默认拷贝函数):将原对象或原数组的引用直接赋给新对象,新数组,新对象/新数组只是原对象的一个引用。 深拷贝:创建一个新的对象和数组,将原对象的各项属性的“值”…