Maven的使用说明与注意事项)
一、中央仓库与私服
1.中央仓库的访问速度很慢,一般会配置私服或镜像仓库。
2.中央仓库只能发开源的资源,不开源、有版权的资源在中央仓库找不到。
二、IDEA与Maven
1.IDEA与Maven分别所属两家公司,用IDEA集成最新版本的Maven可能会出错,不能用。没特殊需求,建议用IDEA自带的Maven。
三、依赖传输冲突问题
1.路径优先:当依赖中出现相同资源时,层级越深,优先级越低,层级越浅,优先级越高。
2.声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的(eg:如果两个2度资源中有相同资源、不同版本的配置,需要对比二者所属的1度资源的配置顺序,配置顺序靠前的1度资源对应的2度资源配置优先级高)。
3.特殊优先:同一个pom里配置了相同资源的不同版本,后配置的覆盖先配置的。
四、引用资源隐藏
1.把optional设置为true,可以对外隐藏自己的引用资源。当其他项目用Maven依赖该项目时,不能看到该项目引用了什么资源。不配置默认为false。
<dependency>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<version>x.x.x</version>
<optional>ture</optional>
</dependency>
五、排除引用
1.排除引用资源的引用资源。排除时会排除所有,不能加版本号。
<dependency>
<!--你引用的资源A-->
<groupId>xxx</groupId>
<artifactId>A</artifactId>
<version>x.x.x</version>
<!--排除掉资源A引用的资源B-->
<exclusions>
<exclusion>
<groupId>xxx</groupId>
<artifactId>B</artifactId>
</exclusion>
</exclusions>
</dependency>
六、依赖范围
1.通过scope标签设置作用范围。
2.三种作用范围:
①主程序范围有效:main文件夹范围内。
②测试程序范围有效:test文件夹范围内。
③是否参与打包:package指令范围内。
七、依赖范围的传递性(了解)
tbc…