maven scope,provided和compile区别,optional,classifier,systemPath等用法介绍

目录

  • maven生命周期介绍
  • scope介绍
    • compile
    • test
    • runtime
    • provided
    • system
    • import
  • systemPath介绍
  • optional介绍
  • classifier介绍
  • exclusions和exclusion介绍

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介绍

必须配合system使用
示例:

<dependency>
			<groupId>com.aliyungroupId>
			<artifactId>aliyun-java-sdk-coreartifactId>
			<version>4.1.0version>
			<scope>systemscope>
			<systemPath>${project.basedir}/lib/aliyun-java-sdk-core-4.1.0.jarsystemPath>
		dependency>

${project.basedir}表示项目根目录。

optional介绍

当该依赖成为间接依赖时,是否让该依赖不成为强制依赖。
例如,a依赖b,b依赖c,
在b项目中,使用optional为true方式依赖c,那么a项目打包时,可选是否打包c,
如果b项目中,使用optional为false方式依赖c,那么a项目打包时,必须将c打包进去。

classifier介绍

指定使用哪个版本的jdk来编译此依赖。

<classifier>jdk15classifier>

exclusions和exclusion介绍

剔除当前依赖中指定的依赖。

<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starter-webartifactId>
			<exclusions>
				
				<exclusion>
					<groupId>org.springframework.bootgroupId>
					<artifactId>spring-boot-starter-loggingartifactId>
				exclusion>
				
				<exclusion> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-tomcatartifactId> exclusion>
			exclusions>
		dependency>

你可能感兴趣的:(Maven,maven)