Maven学习笔记
本笔记配合慕课网上maven视频使用效果最佳,链接如上
一.介绍 —-
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
- bin目录是包含mvn的运行脚本
- boot目录包含一个类加载器的框架,maven使用它加载自己的类库
- conf配置文件
- lib包含maven运行时的依赖类库
二.环境变量的配置
点击下载
maven环境配置,增加一个环境变量MAVEN_HOME,值是maven的安装路径(C:\Program Files\apache-maven-3.5.0-bin\apache-maven-3.5.0
)
修改path则是在path最后面添加;%MAVEN_HOME%\bin
。
Maven的项目结构
项目名
-src
-main
-java
-package
-test
-java
-package
-pom.xml
三.常用命令
mvn -v 查看 maven 版本
compile 编译
test 测试
package 打包
clean 删除 target
install 安装 jar 包到本地仓库
maven快速创建项目骨架目录
两种方式:
1. mvn archetype:generate 按照提示进行选择
2. mvn archetype:generate -DgroupId=com.imooc.maven -DartifactId=
maven-service -Dversion=1.0.0SNAPSHOT -Dpackage=com.imooc.maven.demo
1. -DgroupId=组织名,公司网址反写+项目名
2. -DartifactId=项目名+模块名
3. -Dversion=版本号
4. -Dpackage=代码所存在的包名
四.Maven中的坐标和仓库 ————–
构件坐标:
1. groupId:公司名字+项目名
2. artifactId:项目名+模块名
3. varsion:版本号
仓库:
1. 本地仓库
2. 远程仓库
3. 镜像仓库
五.更改仓库默认路径
已安装到本地仓库中的jar包位置:
C:\Users\用户\.m2\repository\com\tiakon\demo
安装路径conf文件夹下settings.xml文件 打开找到这段备注是的代码:
1
2
3
4
5
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
复制粘贴出来
1
<localRepository>/path/to/local/repo</localRepository>
将localRepository便签内的值替换成新路径即可。
六.maven生命周期
完整的项目构建过程包括: 清理、编译、测试、打包、集成测试、验证、部署
maven三套独立的生命周期
clean 清理项目
1.pre-clean 执行清理前的工作
2.clean 清理上一次构建生成的所有文件
3.post-clean 执行清理后的文件
default 构建项目(最核心)
compile test package install
site 生成项目站点
1. pre-site 在生成项目站点前要完成的工作
2. site 生成项目的站点文档
3. post-site 在生成项目站点后要完成的工作
4. site-deploy 发布生成的站点到服务器上
七.maven中pom.xml常见元素介绍
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--指定了当前pom的版本-->
<modelVersion>4.0.0</modelVersion>
<groupId>反写的公司网址+项目名</groupId>
<artifactId>项目名+模块名</artifactId>
<!--
第一个0表示大版本号
第二个0表示分支版本号
第三个0表示小版本号
0.0.1
snapshot 快照
alpha 内部测试
beta 公测
Release 稳定
GA 正式发布
-->
<version>1.0-SNAPSHOT</version>
<!-- 打包方式:默认是jar,可选war、zip、pom -->
<packaging></packaging>
<!--指定编码格式-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- 项目名 -->
<name></name>
<!-- 项目地址 -->
<url></url>
<!-- 项目描述 -->
<description></description>
<!-- 开发人员列表 -->
<developers></developers>
<!-- 许可证信息 -->
<licenses></licenses>
<!-- 组织信息 -->
<organization></organization>
<!--依赖列表-->
<dependencies>
<!--依赖项-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
<type></type>
<!--依赖范围-->
<scope></scope>
<!--设置依赖是否可选(默认)false-->
<optional></optional>
<!--排斥依赖传递列表-->
<exclusions>
<exclusion>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!--依赖的管理,作用主要定义在父模块中,对子模块进行管理-->
<dependencyManagement>
<dependencies>
</dependencies>
</dependencyManagement>
<!--对构件的行为提供相应的支持-->
<build>
<!--插件列表-->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<!-- <executions>
<execution>
<phase>package</phase>
<goals>
<goal>
jar-no-fork
</goal>
</goals>
</execution>
</executions> -->
</plugin>
</plugins>
</build>
<!--通常用于子模块对父模块pom的继承-->
<parent></parent>
<!--用来聚合运行Maven项目,指定多个模块一起编译-->
<modules>
<module></module>
</modules>
</project>
八.Maven的依赖范围
三种 classpath
1. 编译
2. 测试
3. 运行
maven提供了6种可选依赖范围:
1. compile: 默认范围,编译测试运行都有效。
2. provided: 在编译和测试时有效。(比如说在做 web 时,你在本地运行的 servlet ,
是需要调用已添加到项目中的 servlet-api.jar 这个 jar 包的。这个过程就包含了编译【就是
把 Java 文件编译成 class 文件的过程中也要调用】和测试【测试就是在本地运行】,那么他说
的运行是指,整个项目已开发完成,编译、测试通过后,将 class 文件或包含有 class 文件的 war 包
发布到服务器上的 Tomcat 中运行,这时启动项目,就可以直接调 Tomcat 中的 servlet-api.jar ,
不必再将自己的 jar 包添加到项目中去。也就是说当你选择 provided 时,项目发布时 Maven 不会将
你添加的 jar 包,加入到项目中。)
3. runtime: 在测试和运行时有效。(典型例子:JDBC驱动的实现。)
4. test: 只在测试是有效。
5. system: 类似 provided,与本机系统相关联,可移植性差。
6. import: 导入范围,他只是用在 dependencyManagement 中,表示从其他的 pom 中导
入dependecy的配置。(以下引用官网案例并不难理解。)
九.依赖传递