Maven常用知识点总结
第一部分 脑图
第二部分 常用知识点总结
(1)Maven是一个简化项目构建、管理项目依赖的工具;原来的构建项目,需要借助IDE完成编译、测试、打包、部署等工作,非常繁琐;在Maven中,这些构建步骤都被封装为Maven插件,只需通过命令就可以完成项目构建工作;Maven通过坐标可以定位到任何Java类库(groupId、artifactId、version、packaging)
(2)Windows系统上使用Maven会在CMD上执行一些命令,所以要给Maven配置环境变量Path;升级Maven版本时,下载新版本的Maven,只需要修改环境变量Path,指向新版本的Maven/bin文件夹即可
(3)Maven的bin文件夹下的脚本程序,调用的是Java命令,所以执行Maven命令(mvn clear compile ...)实际上执行的是Java命令;所以一些Java命令的参数也可以用在Maven中:设置环境变量MAVEN_OPTS的值为-Xms128m -Xmx512m,可以指定Maven可用内存的大小;当使用Maven构建大项目时如果没有设置MAVEN_OPTS属性,可能会抛 java.lang.OutofMemory 异常
(4)Maven/conf/settings.xml是全局范围生效;用户/.m2/settings.xml是用户范围生效,仅针对当前用户生效;推荐修改用户范围的settings.xml
(5)有些公司出于安全考虑,Maven需要通过一个代理服务器去连接互联网,可以在settings.xml中配置代理服务器的地址:<proxies> </proxies>
(6)不要使用IDE自带的Maven,尽量用自己安装的Maven
(7)groupId 表示组织 id ,一般是公司域名倒写,多个项目可以用同一个 groupId;artifactId 表示项目 id,一般是项目名称,必须唯一,不能重复;version 定义版本,SNAPSHOT是快照版本,意思是不稳定,还在开发中
(8)常用命令
mvn clean compiler :clean表示清理目录target/ ;compiler表示编译代码mvn clean test:执行JUnit测试
mvn clean package:打包
mvn clean install:将jar包安装到本地仓库,其他项目就可以引用了
这些命令一般按顺序执行
(9)使用ArcheType插件可以快速生成项目骨架,自动创建src目录和测试类:mvn archetype:generate ;Maven有多种项目类型的Archetype,并且可以自己开发定义自己的archetype;IDEA可以选择使用ArcheType快速创建项目骨架,最简单的可选择maven-archetype-quickstart
(10)scope:依赖范围
compile:maven默认范围;编译、测试、运行都有效test:只对于测试代码有效,编译和运行主代码时无效;例如JUnit,只在编译测试代码和运行测试代码时生效
provided:对于编译和测试有效,运行时无效;例如servlet-api.jar,编译和测试时需要此依赖,但运行时由于Servlet容器已提供servlet-api.jar,就不需要Maven重复引入
runtime:对于测试和运行有效,编译无效;例如JDBC驱动,项目代码编译只需要JDK提供的JDBC接口,测试和运行时才需要其实现类
(11)exclusion:排除指定的依赖
例如A依赖B,B内部依赖C,但C是个不稳定的版本,可用exclusion排除不稳定的C版本,并声明一个稳定版本的C依赖
(12)依赖传递和依赖调节
A依赖B,B依赖C,那么Maven会让A间接地依赖C;但如果:
A--B--X(V1)--C--X(V2),依赖链上同一个依赖X有两个版本V1和V2,Maven会根据两个原则选择依赖:
路径最近者优先(依赖链上,距离A最近的依赖)
第一声明者优先(首先在pom中声明)
(13)版本集中管理;<properties>标签
<properties> <activemq.version>5.15.10</activemq.version>
<antlr2.version>2.7.7</antlr2.version>
<appengine-sdk.version>1.9.76</appengine-sdk.version>
<artemis.version>2.6.4</artemis.version>
<aspectj.version>1.9.4</aspectj.version>
<assertj.version>3.11.1</assertj.version>
<atomikos.version>4.0.6</atomikos.version>
<bitronix.version>2.1.4</bitronix.version>
</properties>
(14)Maven仓库分为本地仓库和远程仓库,Maven会根据依赖的坐标先去本地仓库找,找不到再去远程仓库找,并下载到本地仓库
(15)私服是一种特殊的远程仓库,一般在公司局域网内使用
(16)如果默认的远程仓库无法满足需求,例如一些依赖在另外一个远程仓库,此时可以在pom文件中配置该仓库:
<repositories> <repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
(17)有一些远程仓库出于安全考虑不能随便访问,需要注册用户名密码,可通过settings.xml中的 <servers>进行配置
(18)Maven插件查找:https://maven.apache.org/plugins/
(19)私服搭建可参考《Maven实战》
参考:《Maven实战》
以上是 Maven常用知识点总结 的全部内容, 来源链接: utcz.com/z/511501.html