Maven学习笔记

Maven学习笔记记录-来自网易云课堂-及网络

一、Maven是什么

    Maven 是一个项目管理工具,它可以管理项目开发的全部过程(编译、测试、打包、部署、运行等)的所有东西。

    Maven 对依赖关系的特性进行细致的分析和划分,通过Maven管理Jar包可以避免手动添加jar包带来的冲突,

二、Maven的安装

  1、官网下载zip包,解压到本地计算机;http://maven.apache.org/download.cgi

  2、和JAVA一样,需要配置环境变量,配置bin目录;

  3、验证安装:打开命令行cmd,输入 mvn -version,如果正常打印出maven版本信息,说明安装成功。(打印出的maven版本信息也会打印出java的安装目录,因此安装maven之前,要先安装并配置好java环境)

三、Maven的运行机制

  1、Maven的生命周期

  

  clean、default、site 三个生命周期是互相独立的,没有任何的关系。clean生命周期的目的是清理项目,default生命周期负责项目构建,site生命周期负责建立项目站点。

  maven的每套生命周期都包含多个阶段,这些阶段是具有严格执行顺序的。必须顺序执行完之前的每一个阶段才能执行当前阶段。如clean生命周期包含pre-clean、clean和post-clean三个阶段,如果调用命令如“mvn clean”执行clean阶段,则会自动执行pre-clean阶段完成后,再执行clean阶段。

  2、Maven插件

   插件是Maven的核心,所有的功能均有插件提供,每个插件有多个goal(目标),目标是插件功能的细分。比如:maven-clean-plugin插件有三个goal,分别是pre-clean、clean、post-clean。

  Maven内置插件:

  

  3、Maven仓库

  仓库是用来存放jar包的地方;从仓库下载依赖包的顺序是:本地-->私服-->远程

  Maven远程仓库:中央仓库是maven的默认仓库,在maven安装路径下libmaven-model-bulider-3.3.9.jar ,打开jar包里的pom-4.0.0.xml <respository>标签下的url子表签里配置的地址(国外的服务器)。

  

  4、Maven定位jar的方法:Maven坐标

   groupId :公司名或者组织名;

  artifactId:项目名称或者模块名称;

  version:版本号

  例如:

  <groupId>org.springframework</groupId>

  <artifactId>spring-core</artifactId>

  <version>3.2.11.RELEASE</version>

 四、Maven命令的分类及用法

  插件命令

  查看插件描述命令:mvn help:describe -Dplugin=[插件的groupId]:[artfactId]:[version(可选)]

  使用插件命令:mvn [插件名称(简写)]:goal

  

  

  上面的命令:mvn help:describe -Dplugin=org.apache.maven.plugins:maven-archetype-plugin

  可以简写为:mvn help:describe -Dplugin=archetype

   使用Maven插件命令创建项目目录结构(项目骨架):

  在CMD窗口,进入到自己的工作空间的空目录下,输入命令: mvn archetype:generate

  但是这个命令运行很慢:原因是生成项目骨架,需要模板文件,默认的模板文件需要到中央仓库下载大约4-5M的XML文件,中央仓库又在国外,导致命令速度非常慢。

  解决方案:1、提前将文件下载到本地,放到本地仓库的根目录下(用户/.m2/repository,跟repository在同一级目录),然后修改命令: mvn archetype:generate -DarchetypeCatalog=Local   加上一个参数,指定本地资源;

  2、或者使用maven内置的模板,命令为:mvn archetype:generate -DarchetypeCatalog=internal

  生命周期命令

  生命周期命令是插件命令的有序集合;  

 五、使用Maven将项目导入到IDE中

  把使用Maven创建的java项目,导入到IDE中,例如导入到eclipse,直接使用eclipse的导入,因为没有 .classpath 和 .project  文件,eclipse是无法识别maven创建的项目的。

  查看maven提供的eclipse插件的描述:mvn help:describe -Dplugin=eclipse

  在CMD窗口中进入到maven创建的java项目目录,使用eclipse插件的eclipse的goal: mvn eclipse:eclipse ; 该命令有两个作用:一个是增加让eclipse识别的文件,一个是下载pom.xml依赖的JAR包。

    命令执行成功就会在目录下生成 .classpath 和 .project  文件,这样就可以被Eclipse导入识别了,但是导入后项目出现感叹号,错误提示没有加载 M2_REPO 的jar包,进入到eclipse的 Java Bulid Path —— Add Variable ---- Configure Variable ---- NEW

输入:Name: M2_REPO    path: 找到本地仓库目录(C://用户/.m2/repository)  点击OK

六、使用Maven编译和测试

  分析编译插件: mvn help:describe -Dplugin=compiler

  编译源代码: mvn compiler:compile

  在项目根目录下的pom.xml文件,项目需要什么jar文件,只需要在该文件中配置上去,maven就会自动先从本地仓库去找,找不到就去远程中央仓库中下载。

  

<dependencies>
   <dependency>
       <groupId>Junit</groupId>
       <artifactId>junit</artfactId>
       <version>3.8.2</version>
       <scope>test</scope>
   </dependecy>
</dependencies>

  

  分析测试插件及目标: mvn help:describe -Deplugin=surefire

  mvn clean :清理项目命令,会将项目下的taget目录删掉,即删掉了编译的文件;

  clean之后,直接执行surefie命令运行测试用例,可以运行成功,但是并没有执行任何测试用例,因为代码没有编译。

七、使用Maven对项目进行打包

  使用生命周期阶段命令,命令行进入到项目目录,输入命名: mvn package

  如果包含第三方jar包,如何打包? 需要使用 shade 插件,所以要在pom.xml中配置shade插件,因为shade插件要绑定到具体一个生命周期上,所以还要配置上package;

  

如何打一个可执行jar包?

  配置pom.xml文件,添加<configuration>标签,并指定主方法入口可JDK版本,再使用maven命令打包后,JAR包中的.MF文件中,打开这个文件可以看到程序的主入口,然后就可以使用java命令的-jar来执行这个JAR包了。

原文地址:https://www.cnblogs.com/crazytrip/p/7113211.html