依赖原则
-
间接依赖路径最短优先
-
项目中依赖了a, d两个jar 其中
- a-b-c-1.0,
- d-e-f-c-1.1。
- 因为a中依赖的c路径更短因此最后使用 1.0版本
-
申明顺序优先
-
d优先于a声明,最后使用 c 1.1
-
使用
mvn dependency:analyze-only命令用于检测那些声明了但是没被使用的依赖,如有有一些是你自己声明的,那尽量去掉 -
使用
mvn dependency:analyze-duplicate命令用来分析重复定义的依赖,清理那些重复定义的依赖
scope
- 执行步骤一般为
清理--》编译--〉测试--》报告--〉打包--》部署 - compiler
- test
- provided runtimesystem import
版本
- snapshot 测试环境使用
- release 生产环境使用
optional
-
true
-
例如有A,B两个项目,B依赖于A,A中有一个junit的依赖声明。若A中加上optional 为true,B在依赖A时就不会传递依赖Junit了
常用命令
编译
- mvn compile
发布到远程仓库
- mvn deploy
安装到本地
- mvn install
跳过测试
- mvn clean install -Dmaven.test.skip=true
更新子模块的版本号
- mvn -N versions:update-child-modules
查看依赖
- mvn dependency:tree
- mvn -Dverbose dependency:tree #详细信息
其他
- 为了提高国内下载 maven 依赖的速度可以将 settings.xml 中央仓库地址替换为阿里云镜像地址
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
-
定位 maven依赖冲突除了命令外,还可以借助 IDEA插件 maven helper。
-
解决的一般策略就是将冲突的版本找到,并决定取舍 使用