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),本次我们选择普通项目。
3.3.3、配置Groupld和ArifactId
Groupld:工程的唯一标志符,一般采用的就是域名倒置的写法比如com.jd.overseamid
ArifactId:项目名称
version:项目版本号

3.3.4、配置Maven、settings、repository
Maven:选择自己本地配置的Maven版本。
settings:指定settings.xml配置文件。(后面具体解释)
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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Maven项目的介绍、入门搭建相关推荐

  1. Maven项目简单介绍

    什么是maven项目 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件. Apache Maven是一个软件项目管理和依赖管理工具.基于项目对象模 ...

  2. maven学习十之myEclipse搭建maven项目总结

    步骤一 下载并安装maven,并配置M2_HOME和path. 步骤二 利用myEclipse自带maven插件生成.m2文件夹之,并拷贝maven安装包的settings.xml文件之.m2文件夹, ...

  3. maven项目多模块

    maven项目-多模块 1.maven项目模块介绍 1.1 各个模块作用 1.2 maven项目划分为多模块的好处: 2.各个模块的创建 2.1 maven-parent 2.2 maven-dao ...

  4. eclipse maven项目 class类部署不到tomcat下_Springboot介绍以及用Eclipse搭建一个简单的Springboot项目教程

    简述 本文主要介绍Springboot以及用Eclipse搭建一个简单的Springboot项目. Springboot简介 Springboot是由Pivotal团队提供的全新框架,其设计目的是用来 ...

  5. javax maven项目缺少_教育平台项目后台管理系统:介绍与搭建

    项目架构 项目介绍 教育后台管理系统是提供给相关业务人员使用的一个后台管理系统,业务人员可以在这个后台管理系统中,对课程信息.讲师信息. 学员信息等数据进行维护. 课程管理模块 课程管理 新建课程 条 ...

  6. IDEA下Maven多模块项目介绍和搭建

    为什么80%的码农都做不了架构师?>>>    1Maven多模块项目介绍 为了便于演示和表达,在intellij中建了小项目进行举例,如下图所示 其中web-m2模块,依赖于com ...

  7. 说一下dubbo项目简单的搭建过程_dubbo学习(1)--简单的入门搭建实例

    1 简介 dubbo是一个分布式服务框架,由阿里巴巴的工程师开发,致力于提供高性能和透明化的RPC远程服务调用.可惜的是该项目在2012年之后就没有再更新了,之后由当当基于dubbo开发了dubbox ...

  8. dubbo入门学习笔记之入门demo(基于普通maven项目)

    注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...

  9. Maven项目+MVC三层架构+Mysql+Tomcat+私教预约系统前后端(私教、用户、管理员)+可以用于学习SSM框架、javaweb、maven项目入门

    Maven项目+MVC三层架构+Mysql+Tomcat+私教预约系统前后端(私教.用户.管理员)+可以用于学习SSM框架.javaweb.maven项目入门 可以用于课程设计.毕业设计的知识点入门学 ...

最新文章

  1. AIX上如何启动和停止系统服务
  2. 9 Django 模型层(2)
  3. arcalet云服务平台支持Unity3D开发实时多人联机游戏
  4. [GKCTF 2021]Random
  5. 使用Log4j为项目配置日志输出应用详细总结及示例演示.
  6. 从零开始学习Docker
  7. VSAN常见故障2018-11-06
  8. Android之xUtils-3.0数据库框架详解
  9. 动态规划——一维dp数组与二维dp数组
  10. java dagger2_mvp+dagger2+retrofit2+rxjava 项目框架 最佳实践
  11. 日历问题 —— C++
  12. 短信验证码接口开发代码
  13. EVE LOM正式官宣杨洋成为品牌代言人
  14. python cv2 轮廓的包络 面积_Python科学计算——检包络与去包络
  15. 鼠标悬停字体抖动_快速提示:解决悬停状态下的字体粗细问题
  16. 自媒体必备工具:免费的音文对齐生成SRT字幕,快速打轴匹配声音及文字的在线工具
  17. python 打开网页开发者工具_Python获取网页指定内容(BeautifulSoup工具的使用方法)...
  18. ffmpeg基本用法(转)介绍
  19. IM软件客户端,使用状态机来保持在线状态
  20. uniapp小程序项目中实现通讯录功能

热门文章

  1. Python 的 Magic Method
  2. jQuery选中删除功能
  3. vue-cli3的安装和项目创建
  4. 20、路由器的组成及分组交换过程
  5. 使用尺寸(dimen)资源
  6. 《数据结构与算法分析Java》引论
  7. #include stdio.h 和#include stdio.h 的区别
  8. Python代码实现——生态模拟仿真系统
  9. mqtt报文逐条解析
  10. Python中使用jpype调用Jar包中的方法