Maven基础
目录
Maven坐标
坐标简介?
Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。
可以使用坐标来定义项目或引入项目中需要的依赖。
主要组成
groupld 定义当前Maven项目隶属组织名称?
artifactld 定义当前Maven项目名称(通常是模块名称 例如order-service,goods-service)
version 定义当前项目版本号?
Maven依赖管理?
配置依赖?
依赖简介
当前项目运行所需要的jar包,一个项目可以引入多个依赖
配置依赖
- ?在pom.xml中编写<dependencies>标签
- 在<dependencies>标签中使用<dependency>引入坐标
- 定义坐标的groupld,artifactld,version
- 点击刷新按钮,引入新添加的坐标
<dependencies>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
如果引入的依赖在本地仓库不存在,将会连接远程/中央仓库,然后下载依赖。
如果不知道依赖的坐标信息,可以在中Maven仓库官网中搜索
依赖传递
依赖传递简介?
依赖具有传递性
直接依赖 在当前项目中通过依赖配置建立的依赖关系
间接依赖 被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
排除依赖
由于依赖传递的特性,如果我们需要b项目,但不需要b项目依赖的某个项目,可以通过如下方式排除该依赖
以排除projectA由于依赖projectB,而依赖的junit为例
?插入exclusions标签,并在groupId,artifactId中填写要排除的依赖,不需要指定版本
<dependency>
<groupId>com.itheima</groupId>
<artifactId>maven-projectB</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
重新加载,发现projectA不再依赖于junit
?依赖范围
依赖的jar包,默认情况下可以在任何地方使用。
可以通过<scope>标签设置其作用范围
作用范围
主程序范围有效(main文件夹范围内)
测试程序范围有效(test文件夹范围内)
是否参与打包运行(package指令范围内)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
scope值 | 主程序 | 测试程序 | 打包(运行) | 范例 |
comile(默认) | ? ? √ | ? ? ?√ | ? ? ? √ | log4j |
test | ? ? × | ?? ? √ | ? ? ? × | junit |
provided | ?? ? √ | ?? ? √ | ? ? ? × | servlet-api |
runtime | ? ? ?× | ?? ? √ | ? ? ? √? | jdbc驱动 |
生命周期
生命周期简介?
?Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一
每套生命周期包含一些阶段,阶段是有顺序的,后面的阶段依赖于前面的阶段
有三套生命周期 clean? default? site
在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行(运行install,clean不会运行因为他们不属于同一套生命周期)
主要关注如下五个阶段?
clean 移除上一次构建生成的元素
compile 编译项目源代码
test 使用合适的单元测试框架进行测试(junit)
package 将编译后的文件打包,如jar,war
install 安装项目到本地
?执行指定生命周期
- 在idea右侧的maven工具栏选中对应的生命周期双击
- 在命令行中通过命令执行 如mvn compile
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!