zoukankan      html  css  js  c++  java
  • 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包了。

  • 相关阅读:
    《C和指针》读书笔记——第一章 快速上手
    《C和指针》读书笔记——第三章 数据
    Linux下简易蜂鸣器驱动代码及测试实例
    Linux下GPIO驱动(五) misc_register();
    Linux下实现流水灯等功能的LED驱动代码及测试实例
    Linux下GPIO驱动(四) gpio_request();gpio_free();
    支持阻塞操作和轮询操作的globalfifo设备驱动代码分析以及测试代码
    基于等待队列及poll机制的按键驱动代码分析和测试代码
    Linux下GPIO驱动(一) 一个简单的LED驱动
    虚拟内存设备驱动memdev及实例代码
  • 原文地址:https://www.cnblogs.com/crazytrip/p/7113211.html
Copyright © 2011-2022 走看看