maven scope,provided和compile区别,optional,classifier,systemPath等用法介绍
程序员文章站
2022-06-07 19:50:19
...
目录
maven生命周期介绍
编译(mvn compile)
测试(mvn test-compile和mvn test)
打包(mvn package和mvn install和mvn deploy)
运行(mvn exec)
scope介绍
compile
默认scope,参与编译、测试、打包、运行。
test
仅参与测试。
runtime
参与打包与运行,但不参与编译(也就是在开发时不能直接用,只能通过反射才能使用,常用于jdbc实现库)。
provided
参与编译、测试、运行,但不会被打包进jar或war(也就是说,运行时由别人提供,常用于应用服务器已经提供的库,如jsp相关库、servlet相关库)。
system
与compile相同,但不从maven仓库中下载,而是从systemPath属性进行获取。
必须配合systemPath属性一起使用。
import
只在dependencyManagement的中使用,能解决maven单继承问题,import依赖关系实际上并不参与限制依赖关系的传递性。
systemPath介绍
必须配合<scope>system</scope>
使用
示例:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/aliyun-java-sdk-core-4.1.0.jar</systemPath>
</dependency>
${project.basedir}表示项目根目录。
optional介绍
当该依赖成为间接依赖时,是否让该依赖不成为强制依赖。
例如,a依赖b,b依赖c,
在b项目中,使用optional为true方式依赖c,那么a项目打包时,可选是否打包c,
如果b项目中,使用optional为false方式依赖c,那么a项目打包时,必须将c打包进去。
classifier介绍
指定使用哪个版本的jdk来编译此依赖。
<classifier>jdk15</classifier>
exclusions和exclusion介绍
剔除当前依赖中指定的依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!-- 剔除logging -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
<!-- 剔除tomcat -->
<exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion>
</exclusions>
</dependency>
上一篇: Vue中组件、动态组件、插槽、数据处理、生命周期、自定义指令
下一篇: OPTIONAL的一些用法