PS:之前在上JavaWeb的时候,一边划水一边听老师念叨:导入依赖导入依赖….但是一直没理解依赖是个啥,为啥要导入依赖,时至今日终于稍微理解:
1. 依赖是什么?
依赖 就是当前项目运行所需要的jar包,一般也就是别人写好的东西你要拿来用,那么这个时候就需要导入jar包,也就是你需要依赖别人,这就是依赖(当然这只是我的理解)。
2.怎么导入依赖?
在pom.xml中编写<dependencies>标签
在<dependencies>标签中使用<dependency>引入坐标
定义坐标的 groupId、artifactId、version
<!--示例:-->
<dependencies>
<!-- 第1个依赖 : logback -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
</dependency>
<!-- 第2个依赖 : junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
(导入依赖后记得点击依赖刷新按钮,依赖才会生效)
3.依赖的传递性:
简单来说就是当我们在A项目中依赖了B项目,这个时候A项目也会依赖B项目的依赖,这称作间接依赖,对于A项目中的直接配置的依赖则称为直接依赖。
排除依赖:对于上面所说的间接依赖,当我们发生依赖冲突或者其他需要时候,可以用排除我们不需要的间接依赖。排除方法:在<dependency><dependency>内定义<exclusions><exclusions>,然后在其内部定义<exclusion><exclusion>,最后在其内部添加要排除的依赖的<groupId>和<artifactId>,这里无需指明依赖版本。例如排除junit依赖:
<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>
4.依赖的范围:
我们可以设置依赖的生效范围,默认情况下导入的依赖是任何地方都可以用,但是我们也可以指定适用范围,指定方法:使用<scope>标签定义,例如指定仅在测试代码中可用:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
scope标签的取值范围:
| scope值 | 主程序 | 测试程序 | 打包(运行) | 范例 |
| compile(默认) | Y | Y | Y | log4j |
| test | – | Y | – | junit |
| provided | Y | Y | – | servlet-api |
| runtime | – | Y | Y | jdbc驱动 |
5.依赖的生命周期:
- clean:清理工作。
- default:核心工作。如:编译、测试、打包、安装、部署等。
- site:生成报告、发布站点等。
这三套生命周期中有很多个阶段,这里暂时只学习了五个主要的阶段,分别是:
• clean:移除上一次构建生成的文件
• compile:编译项目源代码
• test:使用合适的单元测试框架运行测试(junit)
• package:将编译后的文件打包,如:jar、war等
• install:安装项目到本地仓库
(Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作。在Maven的设计中,实际任务(如源代码编译)都交由插件来完成。)
6.执行指定的生命周期:
- 在maven按钮中点击Lifecycle,然后选择需要的生命周期,idea会自动运行下方与之对应的Plugins中的插件来运行。
- 直接在命令行中进入项目,然后使用mav+对应的生命周期运行,例如运行clean周期:
mvn clean









