目录
一、使用坐标导入 jar 包
二、使用坐标导入 jar 包 – 快捷方式
三、使用坐标导入 jar 包 – 自动导入
四、依赖范围
一、使用坐标导入 jar 包
1、在 pom.xml 中编写 <dependencies> 标签
2、在 <dependencies> 标签中 使用 <dependency> 引入坐标
3、定义坐标的 groupId,artifactId,version
4、点击刷新按钮,使坐标生效
二、使用坐标导入 jar 包 – 快捷方式
1、在 pom.xml 中 按 alt + insert,选择 Dependency
2、在弹出的面板中搜索对应坐标,然后双击选中对应坐标
3、点击刷新按钮,使坐标生效
三、使用坐标导入 jar 包 – 自动导入
1、选择 IDEA中 File --> Settings
2、在弹出的面板中找到 Build Tools
3、选择 Any changes,点击 ok 即可生效
四、依赖范围
三种不同的类路径
Maven在执行过程中有三种不同的classpath,它们运行Java代码的时候,使用不同的classpath类路径下的jar包来执行。三种classpath范围如下:
classpath范围 | 理解为 |
---|---|
编译类路径 | jar包是给main目录下的java代码使用 |
测试类路径 | jar包是给test目录下的java代码使用 |
运行时类路径 | jar包是在程序运行的时候才起作用,理解为target中才起使用 |
常用依赖范围
什么是依赖范围:使用上面三种类路径中的一种或多种
通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。<scope>默认值:compile
依赖范围 |
编译classpath |
测试classpath |
运行classpath |
例子 |
compile |
Y |
Y |
Y |
logback |
test |
- |
Y |
- |
Junit |
provided |
Y |
Y |
- |
servlet-api |
runtime |
- |
Y |
Y |
jdbc驱动 |
system |
Y |
Y |
- |
存储在本地的jar包 |
import |
引入DependencyManagement |
示例:test依赖范围
1. 在02_Web项目中,main目录下创建一个类的,写一个测试类,加上@Test注解,发现报错。
2. 因为在pom.xml的dependency中配置了scope为test,表示只在test目录下可以使用,如果改成compile或provided并且刷新Maven Projects,则可以使用。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<!--依赖范围,配置test,只有test目录下可以,使用-->
<scope>test</scope>
</dependency>
示例:provided依赖范围
例如:servlet-api就是编译和测试的时候才有用,在运行时不用,因为Tomcat容器已经提供了。如果打包到war文件中,可能会导致与Tomcat容器中的Servlet有冲突。
1. 现在我们删除Servlet中的scope,这时它的依赖范围变成默认compile,即在编译,测试,运行时(打包到war中)都可以使用。
<!--Servlet的配置-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
2. 通过Maven启动Tomcat7的方式运行,发现出现如下错误,这是因为我们的Servlet被打包到了war包中,与Tomcat容器中的Servlet API发生了冲突导致
3. 这时如果使用生成周期package打包,会发现在lib下有多余的jar包
4. 将servlet的scope改成provided。停止Tomcat7,执行生命周期的clean命令,再次运行package,可以看到新产生的lib下没有servlet的jar包
5. 再次启动tomcat7,执行正常
示例:runtime依赖范围
JDBC访问MySQL数据库,在写代码的过程中是针对接口开发,不会牵涉到任何JDBC的实现类。如:得到连接对象Connection不是通过我们在代码中写new JDBC4Connection子类来得到的,而是程序在执行过程中才读取MySQL的驱动类生成它的子类对象,只在测试和运行期间才会用到MySQL的子类,所以设置为runtime范围。
1.在pom.xml中配置mysql驱动的依赖,指定依赖范围为runtime,只在测试和运行时期间起作用。
<!-- mysql的驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.22</version>
<!--指定依赖范围-->
<scope>runtime</scope>
</dependency>
2. 在test中,创建一个JDBC的测试方法,得到连接对象,可以发现JDBC的实现类在编译阶段是用不到的。因为编译阶段没有用到任何与JDBC4Connection相关的类,只在测试阶段和运行时才会用到。
@Test
public void testConnection() throws SQLException {
Connection connection = DriverManager.getConnection("jdbc:mysql:///test", "root", "root");
System.out.println(connection);
}
3.得到MySQL的连接对象文章来源:https://www.toymoban.com/news/detail-576047.html
文章来源地址https://www.toymoban.com/news/detail-576047.html
到了这里,关于【Maven】依赖管理—导入jar包的三种方式、依赖范围设置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!