参考:https://www.cnblogs.com/ysocean/p/7416307.html
Maven基础知识
-
Maven 读音是 [ˈmevən],也就是“霉文 ,是项目管理工具面向开发人员
-
下载,安装,环境变量与Java基本相同,不在复述。
-
命令:
- mvn compile 将Java源文件编译成 .class
- mvn test 测试,并生成测试报告 project/target/surefire-reports
- mvn clean 清楚之前编译的的 .class文件
- mvn package 打包成jar或者war
- mvn install 打包成jar放到本地仓库中
-
工程目录结构
hellomaven工程
|- - - src
|- - -|- - -main
|- - -|- - -|- - - java
|- - -|- - -|- - - resources
|- - -|- - - test
|- - -|- - -|- - - java
|- - -|- - -|- - - resources
|- - - pom.xml -
pom.xml 重点理解
-
坐标gav:groupId、artifactId、version
-
依赖范围scope:compile、test、provided、runtime
-
依赖传递:根据第二依赖(父亲)与第一依赖(儿子)配置的范围相关。compile无限制,test不传递,provided也为provided,runtime无限制但(第一依赖配置为runtime则为runtime)
-
依赖排除:项目A引入项目B,B因为依赖引入C,可以在A声明exclusions去掉C。
-
依赖冲突: 两个原则,跨pom路径最短优先,同pom先申明(pom越往下)优先
-
可选依赖optional:设置为true则不会传递
-
-
工程中的继承: 父工程统一管理版本,子工程引入具体包
- dependencyManagement父工程标签没有真正依赖,只是管理依赖版本。
- 子工程版本标签写上 父工程的properties下的标签值引用 ${xxxx.version}
-
模块聚合 通过创建一个聚合工程(通常由父工程担任)来管理各个模块Module,在modules标签下配置各个模块名称
Maven常用配置
- 配置文件(conf/settings.xml)中修改本地仓库路径,window默认是在c盘用户文件夹下.m文件。
<localRepository>E:\apache-maven-3.6.3\repository</localRepository>
- 添加国内阿里云镜像,加快jar包下载速度。
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
- idea 记得maven设置要指定settings.xml
Maven插件
- Maven Helper(依赖jar包冲突助手):打开pom.xml下面会多一个tab页(Dependency Analyzer选项),里面可以显示出冲突的jar包,右键进行添加exclusion。由于可能多次冲突,所以记得refresh一下,确保是否有新的冲突。
常见错误
- idea maven No implementation for org.apache.maven.model.path.PathTranslator was bound.
idea与maven版本不匹配问题
https://www.cnblogs.com/it66/p/11823791.html