Apache Maven依赖的scope范围总结和将jar包安装到maven仓库

本文介绍了Maven中scope的可选值,如compile、test、provided等,阐述了不同依赖范围的作用,像import可解决多父工程依赖问题,runtime适用于运行时所需jar包。还提到了optional可选依赖,最后说明了将jar包安装到Maven仓库的背景和方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. scope的可选值

可选值如下:

compile、test、provided、import、system、runtime

2. 依赖范围表(compile、test、provided)

空间时间\scopecompile(默认)testprovided
main目录(空间)有效无效有效
test目录(空间)有效有效有效
开发过程(时间)有效有效有效
部署到服务器(时间)有效无效无效
应用场景服务器需要该jar包测试服务器已有该jar包

3. import

当我们自己创建的项目父工程,依赖另一个项目的父工程,会违背Maven的单继承。可以通过import依赖范围来依赖多个项目的父工程

如下示例所示:

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>2021.0.3</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

    </dependencies>
  </dependencyManagement>

说明:

  • 必须放在dependencyManagement中
  • type: 打包类型必须是 pom

4. system

用于将本地的jar包引入到我们项目进行使用。移植性太差,不建议使用

  <dependencies>
    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-connector-jdbc</artifactId>
      <version>1.15.0</version>
      <systemPath>C:\Users\dell\Desktop\flink-connector-jdbc-1.15.0.jar</systemPath>
      <scope>system</scope>
    </dependency>
  </dependencies>

5. runtime

专门用于编译时不需要,但是运行时需要的jar包。比如mysql-connector-java-8.0.29.jar驱动包

  <dependencies>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.29</version>
      <scope>runtime</scope>
    </dependency>
  </dependencies>

6. optional可选依赖

有时会有optional为true的可选依赖,如下所示:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <version>2.7.1</version>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>

表示该依赖对于项目来说,可有可无。其核心含义是:Project A依赖Project B,B 中一部分A用不到的代码依赖了C,那么对A来说C就是可有可无的

7. 将jar包安装到maven仓库

7.1 背景

有时别人只提供一个jar包给你,就需要我们将该jar包安装到本地仓库中,供我们使用

7.2 将jar包安装到maven仓库

我们准备一个jar包,名称为maven-learn-0.1.jar

使用install插件的install-file目标,将jar包安装到maven仓库。如下所示

C:\Users\dell>mvn install:install-file -Dfile=C:\Users\dell\Desktop\maven-learn-0.1.jar ^
More? -DgroupId=com.hh ^
More? -DartifactId=maven-learn ^
More? -Dversion=0.1 ^
More? -Dpackaging=jar
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ standalone-pom ---
[INFO] Installing C:\Users\dell\Desktop\maven-learn-0.1.jar to D:\install_software\maven\apache-maven-3.8.1\repository\com\hh\maven-learn\0.1\maven-learn-0.1.jar
[INFO] Installing C:\Users\dell\AppData\Local\Temp\mvninstall1123739996078159064.pom to D:\install_software\maven\apache-maven-3.8.1\repository\com\hh\maven-learn\0.1\maven-learn-0.1.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.730 s
[INFO] Finished at: 2022-07-01T16:28:48+08:00
[INFO] ------------------------------------------------------------------------

C:\Users\dell>

其中定义的groupId、artifactId、version可以和源jar包maven-learn-0.1.jar中定义的不一样

然后就可以对导入的依赖,进行引用使用了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值