maven是什么?
一个 Maven 工程有约定的目录结构,约定的目录结构对于 Maven 实现自动化构建而言是必不可少的一环,就拿自动编译来说,Maven 必须 能找到 Java 源文件,下一步才能编译,而编译之后也必须有一个准确的位置保持编译得到的字节码文件。 我们在开发中如果需要让第三方工具或框架知道我们自己创建的资源在哪,那么基本上就是两种方式:
通过配置的形式明确告诉它
基于第三方工具或框架的约定 Maven 对工程目录结构的要求
其实学习 Maven 就是学这个文件怎么配置,各个配置有什么用。
maven坐标
Maven中的坐标使用三个『向量』在『Maven的仓库』中唯一的定位到一个『jar』包。
groupId:公司或组织的 id,即公司或组织域名的倒序,通常也会加上项目名称
例如:groupId:com.javatv.maven
artifactId:一个项目或者是项目中的一个模块的 id,即模块的名称,将来作为 Maven 工程的工程名
例如:artifactId:auth
version:版本号
例如:version:1.0.0
提示:坐标和仓库中 jar 包的存储路径之间的对应关系,如下
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
//上面坐标对应的jar包在maven本地仓库中的位置
//Maven本地仓库根目录\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar
IDEA导入MAVEN项目
依赖配置
依赖传递
依赖具有传递性
直接依赖:在当前项目中通过依赖配置建立的依赖关系 ——————(绿色方框内)
间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源——————(橙色方框)
排除依赖
排除依赖————主动断开依赖的资源,被排除的资源无需指定版本
用标签 <exclusions>
<exclusion>
</exclusion>
</exclusions>
<exclusions>
<exclusion>
<groupId> 所要排除的依赖 </groupId>
<artifactId> 所要排除的依赖 </artifactId>
</exclusion>
</exclusions>
例:
项目A依赖项目B,项目B依赖junit
排除junit依赖
依赖范围
生命周期
注意:在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行。
【例】
当运行package时,前面的compile和test都会运行
当运行install时,前面的compile和test和package都会运行,但clean不会运行
因为clean和其余四个不在一套生命周期中
执行指定生命周期的两种方式
在idea中,右侧的maven工具栏,选中对应的生命周期,双击执行
在命令行中,通过命令执行