当前位置: 首页 > news >正文

maven 依赖配置补充

依赖配置补充

依赖范围

import

管理依赖最基本的办法是继承父工程,但是和 Java 类一样,Maven 也是单继承的。如果不同体系的依赖信息封装在不同 POM 中了,没办法继承多个父工程怎么办?这时就可以使用 import 依赖范围。
典型案例当然是在项目中引入 SpringBoot、SpringCloud 依赖:

    <!-- SpringCloud 依赖导入 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR9</version><type>pom</type><scope>import</scope></dependency><!-- SpringCloud Alibaba 依赖导入 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.6.RELEASE</version><type>pom</type><scope>import</scope></dependency><!-- SpringBoot 依赖导入 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.3.6.RELEASE</version><type>pom</type><scope>import</scope></dependency>
</dependencies>
import 依赖范围使用要求: 打包类型必须是 pom 必须放在 dependencyManagement 中

system

以 Windows 系统环境下开发为例,假设现在 D:\tempare\atguigu-maven-test-aaa-1.0-SNAPSHOT.jar 想要引入到我们的项目中,此时我们就可以将依赖配置为 system 范围:

<dependency><groupId>com.atguigu.maven</groupId><artifactId>atguigu-maven-test-aaa</artifactId><version>1.0-SNAPSHOT</version><systemPath>D:\tempare\atguigu-maven-test-aaa-1.0-SNAPSHOT.jar</systemPath><scope>system</scope>
</dependency>

但是很明显:这样引入依赖完全不具有可移植性,所以不要使用。如果需要引入体系外 jar 包我们后面会讲专门的办法

runtime

专门用于编译时不需要,但是运行时需要的 jar 包。比如:编译时我们根据接口调用方法,但是实际运行时需要的是接口的实现类。典型案例是:

<!--热部署 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional>
</dependency>

可选依赖

配置举例

optional
<!--热部署 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional>
</dependency>

本质含义
可选其实就是『可有可无』。官网的解释是

其核心含义是:Project X 依赖 Project A,A 中一部分 X 用不到的代码依赖了 B,那么对 X 来说 B 就是『可有可无』的。

版本仲裁
最短路径优先

自定义maven插件

maven profile

mvn clean package enforcer:enforce

mvn install

<build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.6.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins>
</build>
http://www.lryc.cn/news/288874.html

相关文章:

  • Pandas ------ 向 Excel 文件中写入含有合并表头的数据
  • kafka summary
  • 【新书推荐】2.6节 原码、反码和补码
  • docker 网络及如何资源(CPU/内存/磁盘)控制
  • 安装 nvm
  • Redis解决方案:NOAUTH Authentication required(连接jedis绑定密码或修改redis密码)
  • 多维时序 | Matlab实现WOA-TCN-Multihead-Attention鲸鱼算法优化时间卷积网络结合多头注意力机制多变量时间序列预测
  • 如何实现无公网IP实现远程访问MongoDB文件数据库
  • 华为防火墙USG6000V1的NAT实验
  • spark-flink设计思想之吸星大法-1
  • 力扣1312. 让字符串成为回文串的最少插入次数
  • qemu的安装
  • myql入门
  • 前端开发有没有必要转鸿蒙开发?
  • 《动手学深度学习(PyTorch版)》笔记1
  • 前端工程化之:webpack1-5(配置文件)
  • 代码随想录栈和队列专题二刷复盘day17
  • 代码随想录算法刷题训练营day16
  • 【C语言/数据结构】排序(直接插入排序|希尔排序)
  • Jupyter Notebook安装使用教程
  • Unity 中的接口和继承
  • C++区间覆盖(贪心算法)
  • Python with Office 054 - Work with Word - 7-9 插入图像 (3)
  • Nodejs前端学习Day4_fs文件系统模块基础应用之成绩转换
  • 五、Kotlin 函数进阶
  • 重温《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)》 –– 学习笔记(一)
  • 定向减免!函数计算让轻量 ETL 数据加工更简单,更省钱
  • git checkout和git switch的区别
  • 故障树分析蒙特卡洛仿真程序(附MATLAB完整代码)
  • 数据结构-线性表