Maven主要功能以及概念介绍

  • Maven的主要功能
    Maven是一种构建工具(打包项目)、依赖管理工具(资源依赖管理工具:主要用于集成资源)、项目信息聚合工具

maven依赖解析机制 maven依赖作用_eclipse

maven依赖解析机制 maven依赖作用_maven依赖解析机制_02

maven依赖解析机制 maven依赖作用_maven依赖解析机制_03

项目的开发环境(eclipse中包含jre包、 j2ee包)、测试环境的部署(Tomcat部署)是不一样的,主要体现在包的结构等
之前是通过Ant进行打包部署,在其中写相应的脚本,告诉需要引用哪些包。
Maven集成了Ant

  • Maven的核心概念
    1.坐标
    定位在中央仓库的位置,在pom文件中有详细定义

maven依赖解析机制 maven依赖作用_maven_04


组成路径信息,从远程中央仓库获取资源,

maven依赖解析机制 maven依赖作用_maven_05


2.依赖

scope参数:依赖范围

maven项目结构

src目录下有main (主代码)、test(测试代码),与src同级的文件有个pom.xml

maven依赖解析机制 maven依赖作用_maven项目_06

传递性依赖

maven依赖解析机制 maven依赖作用_maven_07

排除传递性依赖(exclusion标签声明)

maven依赖解析机制 maven依赖作用_eclipse_08

子项目在继承父项目时,用parent声明

maven依赖解析机制 maven依赖作用_maven依赖解析机制_09

3.仓库

maven依赖解析机制 maven依赖作用_eclipse_10

maven依赖解析机制 maven依赖作用_maven依赖解析机制_11

maven依赖解析机制 maven依赖作用_maven_12


先找本地仓库,再找远程仓库

4.生命周期
5.插件

  • Maven环境配置
    官网地址:
    www.apache.org

点击下载下载(注意jdk版本)

maven依赖解析机制 maven依赖作用_maven依赖解析机制_13

配置环境变量(必须依赖jdk,所以要求环境变量中有对应的JAVA_HOME)
配置maven信息
新建环境变量

变量名:maven_home

变量值 :对应安装路径

maven依赖解析机制 maven依赖作用_maven依赖解析机制_14

然后配置Path

在之后添加 ;%maven_home%\bin;
注意原来如果有;则不需要重复添加;(所有的变量用逗号分隔)

maven依赖解析机制 maven依赖作用_maven项目_15

查看是否正常运行

cmd下 输入

mvn -v;

maven依赖解析机制 maven依赖作用_eclipse_16


(maven的jdk版本和环境变量中配置的JAVA_HOME一致)

java -version
(可能与环境变量中的jdk版本不同)

  • *maven生命周期

maven依赖解析机制 maven依赖作用_eclipse_17

最常用最上边两个
每一个阶段都有相应的命令(执行命令之前的命令都会被默认执行)
主要文件pom.xml

src 目录分为:
main:(主项目-开发用到)

test:(测试项目)

maven项目

maven依赖解析机制 maven依赖作用_maven依赖解析机制_18


cmd进入maven项目的路径下

在maven安装目录下conf
配置文件settings.xml

本地仓库默认位置

maven依赖解析机制 maven依赖作用_maven项目_19

这个路径往往需要修改
在apache的安装同级目录下新建一个文件夹

maven依赖解析机制 maven依赖作用_maven项目_20

配置本地仓库路径

maven依赖解析机制 maven依赖作用_maven依赖解析机制_21

在cmd的mavan项目路径下 执行

mvn clean :如果项目之前做过相应的编译,则把编译的文件清除掉
BUILD SUCCESS 成功clean

编译命令
mvn compile:大量下载远程资源jar包(需要的资源在pom.xml中定义)–资源下载有约束,也会报错,网络不通畅也会影响

编译后,mavenLocalDB文件中有了内容

maven依赖解析机制 maven依赖作用_eclipse_22

maven与eclipse等开发平台集成,可以方便的引用资源jar包

compile 完成之后 说明资源以下载,而且说明正确编译 而且在maven项目的文件夹中多了一个文件target

maven依赖解析机制 maven依赖作用_eclipse_23

target中主要存放class,即编译后的文件

maven依赖解析机制 maven依赖作用_maven依赖解析机制_24

测试优先,大型项目 团队成员更新代码后,要做maven test,以保证更新的代码正确

主要执行maven项目src\test的内容,而maven compile编译的是maven项目\src\main中的内容

下载test需要的包(测试框架的包)
测试包出错 BUILD FAILED(注意错误内容)

spring 4测试框架 可能会报缺少插件

maven依赖解析机制 maven依赖作用_maven_25


最低版本满足 jdk1.8 18

maven依赖解析机制 maven依赖作用_eclipse_26

所以要更改jdk版本

不同版本的maven下载资源时可以重用(注意maven版本和jdk版本之间的关系)

mvn install :形成一个war包可供发布(打包的实质就是整合jar包外部资源和编译的class产生可运行的war包,可以tomcat或者weblogic上部署运行)
需要下载大宝的工具文件,第一个打包会比较慢,第二次打包会更快(因为打包资源已下载好)

打包后生成的war包在maven项目目录的target下边
此处为spring项目 ,war包拷贝到tomcat目录下边可直接运行

maven依赖解析机制 maven依赖作用_eclipse_27

Maven常用命令

mvn clean:清除以前编译的代码,删除target目录和相关内容删除

mvn compile : 编译项目主目录下边的代码(main下的代码)–下载main相关代码依赖的外部资源

mvn test :编译项目主目录下边的test代码(编译test之前一定编译main代码,保证main正常编译成功)–下载test依赖的外部资源 前提需要执行mvn compile(若不主动执行,命令会自动执行mvn compile)

mvn install: 把编译好的class文件和下载的jar都打成一个完整的*.war文件,直接使用war包可以进行部署

  • Maven与开发环境eclipse集成
    1.比较maven项目和普通eclipse中web项目的区别

所谓的eclipse项目其实就是多了一些项目的管理文件
比如.classpath 、.project 、.settings文件夹等
而maven项目只有src 、pom.xml

maven依赖解析机制 maven依赖作用_eclipse_28

通过命令可以给maven项目生成eclipse配置信息

cmd下进入到maven项目的路径下

mvn eclipse:eclipse :运行此命令可以给maven项目生成eclispe需要的项目管理文件

运行后目录结构发生变化

maven依赖解析机制 maven依赖作用_maven依赖解析机制_29

用eclipse打开构建后的项目

maven依赖解析机制 maven依赖作用_maven_30

开发结构其实无所谓

真正的项目运行是部署在tomcat服务器上的

部署结构和开发结构不同的 比如:

maven依赖解析机制 maven依赖作用_maven项目_31

maven项目在eclipse中的开发结构

maven依赖解析机制 maven依赖作用_eclipse_32

可能会报错

资源jar包引用可能会出现问题,是由于路径引用错误导致的,缺少jar包

maven依赖解析机制 maven依赖作用_eclipse_33

所以要修改默认c盘的路径

在eclipse中配置 查看maven版本

拷贝maven安装目录的配置文件 路径

maven依赖解析机制 maven依赖作用_maven依赖解析机制_34

设置eclipse中默认的jar引用路径信息

maven依赖解析机制 maven依赖作用_maven项目_35

修改后

maven依赖解析机制 maven依赖作用_maven项目_36

可能由于在eclipse中jdk版本不一样,maven也会报错

maven项目中的pom.xml中声明了jdk版本

maven依赖解析机制 maven依赖作用_maven依赖解析机制_37

在eclipse中单独设置jdk 换成jdk1.7 指明已安装的jdk

此时maven项目在eclipse中不会报错
可以对maven项目在eclipse中进行修改

在cmd下进行编译、测试以及打包

pom.xml中也声明了服务器部署的环境版本等

maven依赖解析机制 maven依赖作用_maven_38

jetty:与tomcat同样功能的一个内置的serveltCotainer容器,实质也是Servlet容器

注意 :此文用的maven项目是springMVC的一个测试项目