我的博客地址:https://www.cnblogs.com/themysteryofhackers/p/11934540.html

更新时间:2019-11-26

一、Maven的基本概念

Maven(翻译为"专家","内行")是跨平台的项目管理工具(项目构建工具)。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。

二、什么是项目构建工具

项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。

三、使用Maven的好处

  • Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定。

  • Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程

  • 只需要定义一个pom.xml,用来放置项目的一些依赖,然后把源码放到默认的目录,Maven帮我们处理其他事情

  • 使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。

  • 可以大大的减少项目的大小,因为jar包都在Maven仓库中。

四、maven项目坐标

Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范。拥有了统一规范,就可以把查找工作交给机器。(maven项目坐标是项目唯一的标)

  • groupId:组织标识(包名)

  • artifactId:项目名称

  • version:项目的当前版本

  • packaging:项目的打包方式,最为常见的jar和war两种

五、Maven项目的目录约定

MavenProjectRoot(项目根目录)

|----src

| |----main

| | |----java ——存放项目的.java文件

| | |----resources ——存放项目资源文件,如spring, hibernate配置文件

| |----test

| | |----java ——存放所有测试.java文件,如JUnit测试类

| | |----resources ——存放项目资源文件,如spring, hibernate配置文件

|----target ——项目输出位置

|----pom.xml ----用于标识该项目是一个Maven项目

六、Maven的常用命令

  • mvn compile

    编译项目

  • mvn clean

    清空编译文件

  • mvn test

    测试项目(测试前会先执行编译,自动调用test文件夹下的测试案例)

  • mvn package

    打包项目

  • mvn install

    添加到maven本地仓库

过程

【清理】→【编译】→【测试】→【打包】→【仓库】

七、Maven仓库分类

  • 本地仓库

    每个用户只有一个本地仓库,默认是在~/.m2/repository/,~代表的是用户目录(而实际在项目中使用的maven本地仓库是你自己安装的repository仓库,而不是用户目录下的那个仓库)

  • 中央仓库

    Maven默认的远程仓库,URL地址:http://search.maven.org/

  • 私有仓库

    公司仓库(私服)

八、jar包的直接依赖和传递依赖

直接依赖:直接在Maven项目中导入的jar包依赖,就是该项目的直接依赖包。

传递依赖:在Maven项目中没有导入jar包依赖,而这个项目依赖于别的项目,通过别的项目传递过来的jar包依赖就是传递依赖包。

九、Maven项目jar包冲突的解决方法

解决jar包冲突的方式一:

先声明优先原则,就是这个jar包的坐标在pom.xml中文件声明的位置越上,那么这个jar包就优先导入项目中。

解决jar包冲突的方式二:

路径近者优先原则,直接依赖的路径比传递依赖的路径近,项目最终导入的jar包是路径近的直接依赖的jar包。

解决jar包冲突的方式三:

直接排除的方法,我们要排除某个jar包下的依赖包,在pom.xml 文件中的某个有冲突的依赖下,添加exclusions标签,在exclusions标签下的exclusion标签填写jar包的groupId(组织标识)和artifactId(项目名称),可以不写版本号,因为此时你要排除的jar包的版本号和你写在哪个依赖项目的版本号一样。格式如下。

 <dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.12.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

我是一个Java程序员,一个向往技术的小白,以后我会陆续将自己学习到的Java或者其他的知识会以博客的形式分享出来,希望能对大家有帮助。

喜欢小编的就给我一个关注吧!

如果有哪些问题、有哪些不妥或者侵犯到您的权益的地方,可以联系我,我马上修改。

了解Maven的基本知识的更多相关文章

  1. maven基本基础知识及命令学习-1

    Maven概述:Maven是很有效的项目管理工具,maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目构建.报告和文档的软件项目管理工具.统一管理环境,架包等. 一 maven下载 ...

  2. maven项目部分知识

    1.maven项目在pom.xml中用add dependencies加入jar包,搜索不到jar包的解决方案: Window  --> Show View --> Other输入mave ...

  3. maven的小知识

    一.下载及安装 1.1 下载maven 3.1.1 先到官网http://maven.apache.org/download.cgi 下载最新版本(目前是3.1.1 ),下载完成后,解压到某个目录(本 ...

  4. Maven的相关知识及使用

    一.简介 maven: 是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的,Maven是跨平台的项目管理工具. 1.自动化构建和项目管理工具 Ant→Make→Maven ...

  5. 【maven】理论知识

    Maven是跨平台的项目管理工具,主要服务于Java平台的项目构建.依赖管理. 项目构建 项目构建过程包括[清理项目]→[编译项目]→[测试项目]→[生成测试报告]→[打包项目]→[部署项目]这几个步 ...

  6. 《Maven实战》关联实际工作的核心知识

    通读了<Maven实战>这本书,由于在实际的工作中,对其有一定的操作上的经验.因此,再回头去通读这本书,就能够更加精准的把握里面的核心知识了. 以下我主要从两点去介绍之—— 1> m ...

  7. maven学习整理-进阶知识

    在maven的阶知识主要学习的是maven在eclipse中的使用.依赖相关的问题.继承(父子工程).统一版本管理.聚合等相关知识 1.maven在eclipse中的使用 由上篇基础知识学习到怎样下载 ...

  8. Maven在Eclipse中的实用小技巧

    前言     我们在开发的工程中很多都是Maven项目,这样更加便于我们jar包的管理.而我们一般使用的IDE都是Eclipse,由于我们在日常的开发过程中会经常要用到一些Maven的操作,所以我今天 ...

  9. IntelliJ IDEA上创建maven Spring MVC项目

    IntelliJ IDEA上创建Maven Spring MVC项目 各软件版本 利用maven骨架建立一个webapp 建立相应的目录 配置Maven和SpringMVC 配置Maven的pom.x ...

随机推荐

  1. ubuntu19.04 redis启动和停止及连接

    1.启动停止 如果以(sudo apt install redis-server)方式安装 启动: sudo srevice redis start 停止:     sudo srevice redi ...

  2. Tensorflow中multiply()函数与matmul()函数的用法区别

    1.tf.multiply()函数:矩阵对应元素相乘 官网定义: multiply(x,y,name=None) 参数: x: 一个类型为:half, float32, float64, uint8, ...

  3. jdk8-》stream⾥的map和filter函数使⽤

    map函数 将流中的每⼀个元素 T(入参) 映射为 R(返回值)(类似类型转换)    类似遍历集合,对集合的每个对象做处理.场景:转换对象,如javaweb开发中集合⾥⾯的DO对象转换为DTO对象 ...

  4. ModuleNotFoundError: No module named 'numpy.testing.nosetester'

  5. Highcharts中文帮助文档

    Highcharts中文帮助文档Highcharts 简介: Highcharts 是一个制作图表的 Javascript 类库,可以制作的图表有:直线图,曲线图.区域图.区域曲线图.柱状图.饼装图. ...

  6. ET框架之自写模块SmartTimerModule

    1.代码结构图 2.SmartTimer 模块Entity: using System; namespace ETModel { [ObjectSystem] public class SmartTi ...

  7. JS jQuery 点击页面漂浮出文字

    看到有些网站点击页面任意地方都会弹出文字出来 感觉很炫酷 但其实实现方法很简单 哇哈哈哈~~~ // 调用 ( e, 消失毫秒, 数组, 向上漂浮距离) $(document).click(funct ...

  8. keil里面的包

    1.使用Keil开发STM32程序时,需要下载STM32固件包 首先,keil就是一个编辑器,就跟记事本一样. 但keil还可以编译链接程序. 在创建一个工程时,要选择芯片序列. 要选择芯片序列的原因 ...

  9. 1.4 mysql编码解决:MySQL编码为utf8设置方法

    mysql的默认编码是拉丁,直接insert语句插入数据库时汉字都会显示成问号 1.安装mysql后,启动服务并登陆, 2.使用show variables命令可查看mysql数据库的默认编码: 直接 ...

  10. [Linux] Ubuntu18.04 安装之后配置过程

    前言  最终还是安装了Ubuntu 虽然一开始想用Deepin 但是死活安装不上,我也很绝望(引导一直找不到 恢复BIOS默认设置也还是不行 所以 有些绝望啊....)  所以 为了让以后的我不再那么 ...