构建管理声明:<packaging>pom</packaging>
管理的工程列表:<modules>
声明此处进行依赖管理:<dependencyManagement>
属性定义用于版本管理等:<properties>
<packaging>pom</packaging> <modules> <module>../maven-test</module> </modules> <properties> <fastjson>1.2.75</fastjson> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.16</version> <scope>compile</scope> </dependency> </dependencies> </dependencyManagement>
1、版本管理:
2、依赖管理:
1.可选依赖:<optional></optional>:当别人饮用了你的该依赖时,<optional>true</optional>时该条依赖对外不透明
2.排除依赖:主动断开依赖的资源,被排除的资源无需指定版本。比如project-1依赖了project-2,projec-1中的fastjson和project-2中的fastjson存在冲突,则可在project-1的pom中声明(项目上测试过,排除后如果project-2依赖了该jar包,可能导致某些异常):
<dependency> <groupId>org.example</groupId> <artifactId>project-2</artifactId> <version>1.0-SNAPSHOT</version> <exclusions> <exclusion> <groupId>fastjson</groupId> <artifactId>fastjson</artifactId> </exclusion> </exclusions> </dependency> <dependency>
3.依赖传递:project-1依赖了projet-2(project-2依赖了project-3),project-1就拥有了project-2下的依赖.project-1和project-2就是直接依赖,project-1和project-3就是间接依赖
4.依赖传递的优先级
1、路径优先:层级越深,优先级越低
2、声明优先:当依赖在相同层级时,配置顺序靠前的覆盖配置顺序靠后的
3、特殊优先:例如引依赖时写了两次,那么后写的覆盖先写的
5.依赖范围:
依赖的jar默认情况可以在任何地方使用,开源通过<scope>标签配置该依赖的作用范围(可使用的范围)
scope | main | test | package |
compile(默认) | Y | Y | Y |
test | Y | ||
provided | |||
runtime | Y |
6.本地仓库访问私服settings.xml配置
<servers> <server> <id></id> id是自定义名称 <username></username> 用户名 <password></password> 密码 </server> </servers> <mirrors> <mirror> <id></id>私服名称 <mirrorOf>*</mirrorOf> 使用的都从这拿 <url></url> 私服的url </mirror> </mirrors>