依赖冲突管理
- 路径优先:当依赖出现冲突时,层级越深,优先级越低,层级越浅,优先级越高
- 声明优先:当冲突资源为同级依赖时,配置顺序靠前的覆盖配置顺序靠后的
- 特殊优先:当同级配置了相同资源的不同版本(同一个pom),下面的覆盖上面的
可选依赖
optional参数值为true,则表示此依赖对外隐藏,不会被路径依赖引用
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<optional>true</optional>
</dependency>
排除依赖
exclusions关键字,排除不写版本,排除会排出所有
<exclusions>
<exclusion>
<groupId>...</groupId>
<artifactId>...</artifactId>
</exclusion>
</exclusions>
依赖范围
- 依赖的jar包默认情况下任何地方可以使用,可以通过scope标签配置管理使用范围,
- 作用范围
- 主程序范围有效(main文件夹范围内)
- 测试程序范围有效(test文件夹范围内)
- 是否参与打包(package命令范围内)
依赖范围传递性
插件
maven-source-plugins
指明maven在打包项目时的生命周期和范围
里面参数:
- phase 来指定打源码包的时机,可以是任何你指定的时机,比如:compile、install、test等,这个要和我们平时打的普通jar包区分开.
构建管理
定义该工程用于构建管理
<package>pom</package>
管理的工程列表
<modules>
<module>..</module>
<module>..</module>
</modules>
属性
属性类别
- 读取java系统属性
// 调用格式
${user.home}
// 系统属性查询方式
mvn help:system
- 环境变量属性
作用:使用Maven配置文件setting.xml中的标签属性,用于动态配置
// 调用格式
${env.JAVA_HOME}
创建多环境
<profiles>
// 这里不同的环境配置可以在打包命令中指定 -P dev
<profile>
<id>dev</id>
// 定义环境中专用的属性值
<properties>
<propertie>
<>
</propertie>
</properties>
// 设置默认启动
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>sit</id>
// 定义环境中专用的属性值
<properties>
<propertie>
<>
</propertie>
</properties>
</profile>
</profiles>
跳过测试
- 命令
mvn clean package -D skpiTests
- pom.xml配置
-- 在插件里加
<plugin>
<artifactId>maven-sure file-plugin</artifactId>
<version>...</version>
<configtation>
<skipTests>true </skipTests>
<includes>
// 包含指定的用例
<include></include>
</inclues>
// 排除指定的用例
</exclues>
...
</exclues>
</configtation>
</plugin>
发布配置管理
<distributionManagement>
<repository>
<id>这里的id就是serring.xml中的server中定义的id</id>
<url></url>
</repository>
<snapshotRepository>
<id>这里的id就是serring.xml中的server中定义的id</id>
<url></url>
</snapshotRepository>
</distributionManagement>