万字硬核!史上最详细的Maven教程!——双非上岸阿里巴巴系列
Posted 来老铁干了这碗代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了万字硬核!史上最详细的Maven教程!——双非上岸阿里巴巴系列相关的知识,希望对你有一定的参考价值。
东北某不知名双非本科,四面成功上岸阿里巴巴,在这里把自己整理的面经分享出来,欢迎大家阅读。
Maven是目前最流行的管理工具,没有之一。也是面试时最易被广大同学忽略的知识。大到BAT,小到创业公司,几乎所有的企业都以Maven作为自己的核心管理工具。 因此,只要从事互联网行业,Maven就是必须要会的。
恰个饭——>《阿里巴巴 Java 开发手册》,业界普遍遵循的开发规范
本博客内容持续维护,如有改进之处,还望各位大佬指出,感激不尽!
Maven教程
第一章 Maven简介
1.1 Maven概述
Apache开发的管理工具
概念:Maven项目对象模型(POM),通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
目标:希望开发人员能在最短时间内理解开发的完整状态。
特点:简化构建过程、统一构建体系、提供高质量的项目信息、提供开发的最佳实践指南、实现透明的新特性的迁移、简化构建过程。
1.2 Maven的作用
1、管理依赖:管理Jar及其下载,版本
2、构建项目:完成项目代码的编译、测试、打包和部署
1.3 Maven的使用方式
1、独立使用Maven:使用Maven的各种命令,完成代码的编译、测试和打包
2、结合开发工具使用:一般在idea中使用maven,简单,快捷,不需要级命令
1.4 Maven的核心概念
1. POM: pom.xml,叫做项目对象模型、把一个项目当做一个模型使用,类似于控制层,完成编译、测试、打包、安装、部署等等。
2. 约定的目录结构:有规定的目录和文件位置
3. 坐标:唯一的字符串,表示资源
4. 依赖管理:管理项目可以使用的Jar文件
5. 仓库管理(了解):资源存放的位置
6. 生命周期(了解):maven工具构架项目的过程
7. 插件和目标(了解):执行maven构建时用的工具是插件
8. 继承
9. 聚合
1.5 安装Maven环境
Maven的使用,先难后易,使用maven命令很难,在idea中直接使用maven,代替命令。
Maven安装和配置
-
必须要下载到英文名字的文件夹中,否则文件不会生效,下面是一些核心文件的解释
- bin:执行程序,主要是mvn.cmd
- conf: maven的本身配置文件,主要是setting.xml
-
配置环境变量:在系统的环境变量中,指定一个M2_HOME名称,指定它的值maven工具的安装目录
再把M2_HOME加入到path中,在所有路径前加入%M2_HOME%\\bin
- 安装成功的标志
打开cmd,输入mvn -v
指令,若能执行成功,则代表maven安装成功了。
1.6 Maven的编译过程
命令行的编译方式:
输入cmd->进入命令行,进入想输入的Maven文件中,输入mvn compile,编译所有Java文件
为什么要下载? 因为Maven工具执行需要很多插件
下载了什么东西? 插件:完成某些功能
下载的东西放哪了? 默认仓库:C:\\Users\\Administrator\\.m2\\repository
执行mvn compile后,会在项目的根目录下生成target目录(结果目录),maven编译的java程序,最后的class文件都放在target目录中
也就是说,编译项目时,明明某个文件存在,可运行时系统却报错为不存在,原因就可能是该文件在项目中存在,但是在target文件夹中不存在。
修改仓库地址:在setting.xml中修改
第二章 Maven的核心概念
2.1 Maven工程约定的目录结构
任何项目其实都有约定,约定就是一个规则。
main:主程序的Java代码和配置文件
Java:程序包和包中的Java文件
resources: Java程序中要使用的配置文件
pom.xml: Maven的核心文件
2.2 pom.xml文件
pom.xml,叫做项目对象模型。控制全局。把一个项目当做一个模型使用,类似于控制层,完成编译、测试、打包、安装、部署等等。
2.3 仓库
-
存放物品:存放Jar、Maven的插件等等
-
仓库分类
- 本地仓库,可以在maven安装目录/conf/settings.xml中指定
- 中央仓库:最权威的,所有的资源都放在这里
- 中央仓库的镜像:分担压力的
- 私服:公司局域网内部使用的,就是公司自己开发的
2.4 Maven的生命周期
概念:项目的构建过程:清理、编译、测试、报告、打包、安装、部署
2.5 Maven的常用命令
-
概述:Maven通过命令完成
-
mvn clean:清理
-
mvn compile:编译
src/main/java
目录中的程序,把Java编程成class文件,并放到target/classes目录中 -
mvn test-compile:编译
src/main/test
目录下的Java程序,拷贝到target/test-class目录中 -
mvn test:进行单元测试,使用Junit测试
src/main/java
目录下的程序是否符合要求 -
mvn package:打包。把程序中
src/main/test
下面的Java编译后的class和resources中的配置文件放入到一个压缩包中。 -
mvn install:把jar、war安装到本机仓库中
2.6 插件
概念:Maven提供的功能,用来执行清理、编译、测试、报告、打包的程序
2.7 坐标(gav)
由三个向量组成,唯一定位一个Maven项目,三者同时定义路径,groupId和version决定Jar包名称
groupId:组织名,通常是一个公司或组织名称倒序+项目名
artifactId:模块名:通常是工程名
version:版本号
2.8 依赖(dependency)
依赖的作用:用依赖把jar导入到项目中
第三章 Maven在IDEA中的应用
3.1 在idea中设置maven
1. maven简介
idea中内置maven,但一般不用,因为用内置修改maven的设置不方便
因此使用自己安装的maven,需要覆盖默认配置,也就是指定maven的安装位置等信息
其中:Setting选项是用来设置本项目的Maven的
Other Setting是设置以后建立的项目的Maven的
目录如下:
进入Setting项,可以看到有三个项目管理工具
其中,框选的两个项目工具最常用,Gradle是最新开发的项目管理工具,功能更强但应用较少。
打开Maven,框选的三个分别是Maven工具的存放路径、配置文件的存放路径、本地仓库(target文件)的存放路径
2. maven-Runner选项的配置
1. 变得更快
接下来进入Runner选项,配置vm项,可以让maven创建的更快
原本的maven默认下载一个模板文件,有7M,下载很慢,为了不让他下载,就需要在vmOption中进行配置,禁用相关的下载。
2. 自动刷新功能
若想让Maven自动刷新,即一旦更新pom.xm文件,Maven项目就自动刷新,只需勾选红框内的选项即可
3. 对新创建的项目的Maven配置
操作与对本项目进行Maven配置一致
3.2 Maven创建Java项目
需要选择的Maven模板:
使用普通Java项目模板创建即可
3.3 Maven创建Web项目
需要选择的Maven模板:
第四章 依赖管理
4.1 依赖的范围
依赖范围的名称和说明见下表:
一般来说,只有单元测试的依赖范围是test
下面,给出了test的依赖示例
第五章 Maven常用设置
5.1 Maven的属性设置
<properties>设置maven的常用属性
5.2 全局变量
全局变量的定义格式:${变量名}
对于:自定义全局变量,一般用来自定义版本号。做法是:先使用全局变量定义,再使用${变量名}
5.3 指定资源插件
一般来说,如果不指定任何资源插件,src/main/java
和 src/test/java
两个目录中的所有*.java文件会被编译,并将结果分别存放到target/classes
和targe/test-classes
目录中
但是这两个目录中的其他文件都会被忽略掉,因此,如果我们需要使用其他文件,在运行时就会报错。 解决办法是指定资源插件,将以下内容放到<buid>标签中,将其他文件也进行编译
<build>
<!--把src/main/java目录中的.xml文件包含到输出结果中,输出到classes目录中-->
<resources>
<resource>
<directory>src/main/java</directory> <!--所在的目录-->
<includes> <!--包括目录下的.properties.xml文件都会扫描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!--表示不用过滤器,因为.property已经起到过滤的作用了-->
<filtering>false</filtering>
</resource>
</resources>
</build>
单词学习
Execution:执行
Deployment:部署
archetype:模板、原型
喜欢就点个赞吧!
以上是关于万字硬核!史上最详细的Maven教程!——双非上岸阿里巴巴系列的主要内容,如果未能解决你的问题,请参考以下文章
❤️ 熬夜爆肝3万字!史上最硬核的Linux命令大全,还不收藏? ❤️通俗易懂,小白一看就会