MAVEN 介绍

1、maven是什么
Maven是一款服务于java平台的自动化构建工具

构建:以java源文件、框架配置文件、jsp、html、图片、js、css等资源为“原材料”,去生成一个可以运行项目的过程

2、构建过程包含哪些环节
1)、清理:清理以前编译得到的class文件,为下一次编译做准备
2)、编译:将java源文件编译成class字节码文件
3)、测试:自动测试,自动调用Junit程序
4)、报告:测试执行结果
5)、打包:动态web工程打war包,java工程打jar包
6)、安装:Maven特定概念——将打包得到的文件复制到仓库中的指定位置
7)、部署:将动态web工程生成的war包放到servlet容器的指定目录下,使其可以正常运行

3、Maven工程目录结构

4、Maven常用命令
执行构建过程相关的命令需要在pom.xml所在的目录
首次执行相关的命令时需要下载执行命令的相关插件,下载后存放在settings.xml配置的本地仓库中。
a、mvn clean:清理
b、mvn compile:编译主程序
c、mvn test compile:编译测试程序
d、mvn test:执行测试
e、mvn package:打包
f、mvn install:将自己的项目工程打成依赖包放在仓库

5、依赖范围
<scope></scope>
a、compile:编译依赖范围,对编译、测试、运行都有效
对主程序是否有效:有效
对测试程序是否有效:有效
是否参与打包:参与
b、test:测试依赖范围
是否对主程序有效:无效
是否对测试程序有效:有效
是否参与打包:不参与
例子:junit
c、provided:已提供依赖范围
是否对主程序有效:有效
是否对测试程序有效:有效
是否参与打包:不参与
是否参与部署:不参与
典型的例子:servlet-api
d、runtime:运行时依赖
是否对主程序有效:有效
是否对测试程序有效:有效
是否参与打包:参与
是否参与部署:参与
例子:jdbc驱动实现

6、pom.xml中的坐标
groupid:公司名称组织域名+项目名称
artifactid:模块名称
version:模块版本号
根据坐标找jar:groupid(.换成斜杠)/artifactid/version/artifactid-version.jar


7、pom.xml中的配置依赖原则
1、传递性原则(scpoe为complie,test跟provided不会传递)
如果project1依赖common-logging.jar包,那么在project2中配置依赖project1后,common-logging.jar会自动添加到project2中。
2、依赖调整第一原则:路径最近者优先(路径长度)
  例子:如A-->B-->C-->D,D中依赖了spring-core.jar,A-->E-->F,F中依赖spring-core.jar,其中A到D的路径长度为3,A到F的路径长度为2根据第一原则,A会依赖F中的spring-core.jar
3、依赖调整第二原则:路径长度相等时,第一声明者优先
  例子:如A-->B-->C,C中依赖了spring-core.jar,A-->E-->F,F中依赖spring-core.jar,其中A到C的路径长度为2,A到F的路径长度为2
  此时根据第一原则无法判断,需要结合第二原则在A项目中的pom.xml文件中看,如果先声明依赖B则用C的spring-core.jar

8、仓库分类
当maven根据坐标寻找构件的时候会先查看本地仓库,如果本地仓库存在此构件,则直接使用;如果本地仓库不存在此构件,Maven就会去
远程仓库中查找,发现构件后下载到本地仓库在使用。如果本地仓库跟远程仓库都没找到,Maven就会报错。

1、本地仓库
2、远程仓库
  1)私服【Nexus】:架设在当前局域网环境下,为当前局域网范围的所有Maven工程服务

  


  2)中央仓库:架设在Internet上,为全世界所有的Maven工程服务
  3)中央仓库镜像:架设在各个大洲,为中央仓库分担流量,减轻中央仓库的压力,更快的响应用户请求

仓库中保存的内容
1、maven自身所需的插件
2、第三方工具或插件
3、我们自己开发的maven工程

—转载请注明出处
原文地址:https://www.cnblogs.com/landiss/p/13873804.html