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

回到顶部