【Maven】依赖管理—导入jar包的三种方式、依赖范围设置

这篇具有很好参考价值的文章主要介绍了【Maven】依赖管理—导入jar包的三种方式、依赖范围设置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、使用坐标导入 jar 包

 二、使用坐标导入 jar 包 – 快捷方式

 三、使用坐标导入 jar 包 – 自动导入

 四、依赖范围


一、使用坐标导入 jar 包

1、在 pom.xml 中编写 <dependencies> 标签

2、在 <dependencies> 标签中 使用 <dependency> 引入坐标

3、定义坐标的 groupId,artifactId,version

4、点击刷新按钮,使坐标生效

maven自动导入依赖,阶段六:maven,maven,jar,java,intellij-idea,坐标导入依赖

 二、使用坐标导入 jar 包 – 快捷方式

1、在 pom.xml 中 按 alt + insert,选择 Dependency

2、在弹出的面板中搜索对应坐标,然后双击选中对应坐标

3、点击刷新按钮,使坐标生效

maven自动导入依赖,阶段六:maven,maven,jar,java,intellij-idea,坐标导入依赖

maven自动导入依赖,阶段六:maven,maven,jar,java,intellij-idea,坐标导入依赖

 三、使用坐标导入 jar 包 – 自动导入

1、选择 IDEA中 File --> Settings

2、在弹出的面板中找到 Build Tools

3、选择 Any changes,点击 ok 即可生效

maven自动导入依赖,阶段六:maven,maven,jar,java,intellij-idea,坐标导入依赖

 四、依赖范围

三种不同的类路径

Maven在执行过程中有三种不同的classpath,它们运行Java代码的时候,使用不同的classpath类路径下的jar包来执行。三种classpath范围如下:

classpath范围 理解为
编译类路径 jar包是给main目录下的java代码使用
测试类路径 jar包是给test目录下的java代码使用
运行时类路径 jar包是在程序运行的时候才起作用,理解为target中才起使用

maven自动导入依赖,阶段六:maven,maven,jar,java,intellij-idea,坐标导入依赖

 常用依赖范围

什么是依赖范围:使用上面三种类路径中的一种或多种

通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。<scope>默认值:compile

maven自动导入依赖,阶段六:maven,maven,jar,java,intellij-idea,坐标导入依赖

依赖范围

编译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注解,发现报错。

maven自动导入依赖,阶段六:maven,maven,jar,java,intellij-idea,坐标导入依赖

 

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有冲突。

maven自动导入依赖,阶段六:maven,maven,jar,java,intellij-idea,坐标导入依赖

 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发生了冲突导致

maven自动导入依赖,阶段六:maven,maven,jar,java,intellij-idea,坐标导入依赖

 3. 这时如果使用生成周期package打包,会发现在lib下有多余的jar包

maven自动导入依赖,阶段六:maven,maven,jar,java,intellij-idea,坐标导入依赖

 4. 将servlet的scope改成provided。停止Tomcat7,执行生命周期的clean命令,再次运行package,可以看到新产生的lib下没有servlet的jar包

maven自动导入依赖,阶段六:maven,maven,jar,java,intellij-idea,坐标导入依赖

 5. 再次启动tomcat7,执行正常

maven自动导入依赖,阶段六:maven,maven,jar,java,intellij-idea,坐标导入依赖


示例: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的连接对象

maven自动导入依赖,阶段六:maven,maven,jar,java,intellij-idea,坐标导入依赖文章来源地址https://www.toymoban.com/news/detail-576047.html


到了这里,关于【Maven】依赖管理—导入jar包的三种方式、依赖范围设置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决idea导入maven项目缺少jar包的问题

    如果以上两步还是不好用,可以3、重启idea,会自动加载 4、如果还不好用,找到root模块,先clean再install 5、如果还不好用,可以退出idea,删除所有模块的.iml文件和target文件 6、如果以上都不好用,那基本是就是下载不下来了,找同事或者网上找吧,手动添加导本地mavben库里

    2024年02月16日
    浏览(67)
  • 使用maven打jar包时,如何只把依赖的其它jar中的类打进jar包,没有依赖的其它jar包的类文件不打进来?

    使用Maven打包时,默认情况下,所有依赖的jar包都会被打包到生成的jar文件中。 如果只想将依赖的其他jar中的类文件打进来,而不包含其它jar包,可以使用Maven的 maven-shade-plugin 插件进行配置。 以下是一个示例配置,将只打包依赖的其他jar中的类文件: 1. 在pom.xml文件中添加

    2024年02月15日
    浏览(42)
  • Maven工程打jar包的N种方式

    内容 :此种方式可以自己选择制作胖包或者瘦包,但推荐此种方式制作瘦包。 输出 :输出目录在out目录下 流程步骤 : 第一步: 依次选择 file-projecct structure-artifacts-点击+ (选择jar)-选择 from module with dependencies 第二步:弹出窗口中指定Main Class,是否选择依赖jar包,是否包含测

    2024年02月08日
    浏览(44)
  • 【Java——maven的使用与idea创建maven项目,导入maven依赖(jar包)】

    1.1、打开maven安装路径下的conf文件夹,找到里面的settings.xml文件,(如果使用的是maven安装程序安装的maven,则settings.xml文件和本地仓库位置在默认位置:C:Userspenglei.m2)将下面的代码复制里面,切记不要放到注释里面 1.2、maven项目全局默认配置jdk版本信息,将下面的代码复制

    2024年02月08日
    浏览(90)
  • springboot依赖注入的三种方式

    springboot依赖注入的三种方式 在 Spring Boot 中,使用 XML 配置依赖注入(DI)时,需要使用 bean 元素来定义 bean,并使用 property 元素来为 bean 的属性注入值或依赖对象。 以下是一个简单的示例: 在 src/main/resources 目录下创建 applicationContext.xml 文件。 在该文件中定义一个 testBean

    2023年04月23日
    浏览(45)
  • Maven导入sqlserver驱动jar包依赖包到本地仓库并引用

    一、配置maven环境变量 (1)、找到此电脑右键----点击属性----选择高级系统设置----点击环境变量----新建系统变量 (2)、新建系统变量:MAVEN_HOME,变量值填你maven解压的路径,然后点击确定。 (3)、在已有的path系统变量里,点击编辑,在变量值的最后填写%MAVEN_HOME%bin。 (4)、验证是

    2023年04月08日
    浏览(52)
  • IDEA导入Web项目的三种方式

    无论那种方式,它们都有相同的前提,那就是首先将你想要导入的Web项目放置在你想要导入的工程目录下 例如(举例子):笔者要将一个名为mavenWeb1的Web项目(笔者自己的),导入到P5工程下(笔者自己的),那么首先需要将mavenWeb1文件放置在P5文件下,如下图所示: 若你的

    2024年02月07日
    浏览(40)
  • maven无法自动导入jar包解决方式

    友情提醒: 先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。 ①确定pom文件中的/dependency依赖导入配置没有写错 ②确定本地仓库repository里也有这个jar包 但是点击Reimport导入按钮,jar包依然导入不进来。 如果是内网环境,连接不上外网,就

    2024年01月18日
    浏览(34)
  • sql文件导入数据库的三种方式

    方式一:在数据库的表中直接右键运行sql文件    方式二:终端窗口 cmd,管理员身份运行 C:WINDOWSsystem32mysql -uroot -p 输入密码 use 数据库名; mysql use reggie; source sql文件路径(不能含有中文) 方式三:在数据库或终端输入sql指令 新建查询--输入sql语句--运行

    2024年02月03日
    浏览(55)
  • 生产项目中基于springboot项目解决循环依赖的三种方式

    在生产项目中,可以使用Spring Boot框架来快速开发Spring应用程序。Spring Boot提供了一种方便的方式来创建独立的,基于Spring的应用程序,并且有着高度的自动化配置和开箱即用的特性。 可以使用@Lazy注解来控制Bean的延迟初始化,同时可以使用AOP切面编程来解决循环依赖问题。

    2024年02月11日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包