maven常见知识点

Maven依赖中scope的含义:

(1)compile【编译】
如果没有指定 scope 值,该元素的默认值为 compile。默认scope为compile,表示为当前依赖参与项目的编译、测试和运行阶段,属于强依赖。打包之时,会打到包里去

(2)runtime【运行时】
被依赖项目无需参与项目的编译,但是会参与到项目的测试和运行。与compile相比,被依赖项目无需参与项目的编译
适用场景: 在编译的时候我们不需要 JDBC API 的 jar 包,而在运行的时候我们才需要 JDBC 驱动包。

(3)test【测试】
被依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行

(4)provided
该依赖在打包过程中,不需要打进去,这个由运行的环境来提供,比如tomcat或者基础类库等等,事实上,该依赖可以参与编译、测试和运行等周期,与compile等同。区别在于打包阶段进行了exclude操作
适用场景: 如果我们在开发一个web 应用,在编译时我们需要依赖 servlet-api.jar,但是在运行时我们不需要该 jar 包,因为这个 jar 包已由应用服务器提供,此时我们需要使用 provided 进行范围修饰。

(5)system
使用上与provided相同,不同之处在于该依赖不从maven仓库中提取,而是 从本地文件系统中提取,其会参照systemPath的属性进行提取依赖。
当maven依赖本地而非repository中的jar包,sytemPath指明本地jar包路径,例如

<dependency>
    <groupId>org.open</groupId>
    <artifactId>open-core</artifactId>
    <version>1.5</version>
    <scope>system</scope>
    <systemPath>${basedir}/WebContent/WEB-INF/lib/open-core.jar</systemPath>
</dependency>

(6)import
它只使用在中,表示从其它的pom中导入dependency的配置,例如:B项目导入A项目中的包配置

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.3.RELEASE</version>
</parent>

optional标签

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-devtools</artifactId>
	<optional>true</optional>
</dependency>

当模块B依赖模块A时:
当optional不写时,会进行依赖传递;
当optional为true,这个依赖项不会传递到B;
当optional为fasle,这个依赖项会传递到B

dependency中的type

type用于声明引入的依赖的类型
引入某一个依赖时,必须指定type,不写时默认为jar
type的值一般有jar、war、pom等

参考原文:https://segmentfault.com/a/1190000022039446

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值