依赖范围是用来控制依赖与classpath(编译classpath、测试classpath、运行classpath)的关系
eg :
Maven有以下几种依赖范围:
compile:编译依赖范围,默认使用该依赖范围。对编译、测试、运行三种classpath都有效。
test:测试依赖范围,只对测试classpath有效。
runtime:运行时依赖范围,对测试跟运行classpath有效。
provided:已提供依赖范围,编译跟测试classpath有效。因为运行项目时容器提供,不需要maven重复引入。
可选依赖可以理解为不传递依赖,通过
eg:只想对当前项目进行热部署,需配置
org.springframework.boot
spring-boot-devtools
true
true
项目A依赖于项目B,但是不想引入传递性依赖C,而是自己显式的引入依赖C的某个版本。
通过
*
*
通过配置镜像可以替代中央仓库,从而提供比中央仓库更快的服务。但是由于镜像仓库屏蔽了被镜像仓库,所以当镜像仓库挂了时,maven无法访问被镜像仓库,导致无法下载jar等。
一般在maven conf文件夹下的settings.xml中添加镜像配置,如下所示:
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
通过仓库搜索可以方便的找到依赖的声明片段,然后直接copy到pom.xml中,也可以下载jar等等。
Nexus : https://repository.sonatype.org
mvnrepository : http://mvnrepository.com/
依赖管理:父pom中使用
dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的。这一点与dependencies不同。
dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)
插件管理:父pom中使用
多模块的maven项目中聚合跟继承两个概念,聚合为了方便快速构建项目,继承为了消除重复配置。
父项目中打包方式为pom,并且包含
pom
common
persistence
service
web
mvn install:install-file -Dfile=D:\repository\com\superwheat\demo-spring-boot-starter\0.0.1-SNAPSHOT\demo-spring-boot-starter-0.0.1-SNAPSHOT.jar -DgroupId=com.superwheat -DartifactId=helloworld-spring-boot-starter -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar
其中,-Dfile为jar包的位置