• Maven使用


    安装

          1  安装jdk   2  下载解压maven   3  配置环境变量path    4 输入mvn –v  检测是否安装成功

    配置

          1 全局文件配置:

           %MAVEN_HOME%/conf/settings.xml 是maven全局的配置文件。

           该配置文件中配置了本地仓库的路径,默认就是:~/.m2/repository。其中~表示当前用户路径C:Users[UserName]。

         2 用户配置

           用户级别的仓库在全局配置中一旦设置,全局配置将不再生效,转用用户所设置的仓库,否则使用全局配置文件中的默认路径仓库。

    命令

           Mvn compile  完成编译操作  会生成target目录,该目录中存放了编译后的字节码文件

           mvn clean命令   会将target目录删除

           mvn test命令,完成单元测试操作  会在target目录中生成三个文件夹:surefire、surefire-reports(测试报告)、test-classes(测试的字节码文件)

           mvn package命令,完成打包操作执行完毕后,会在target目录中生成一个文件,该文件可能是jar、war

           mvn install命令,完成将打好的jar包安装到本地仓库的操作 会在本地仓库中出现安装后的jar包,方便其他工程引用

           mvn clean test命令  先执行clean,再执行test,通常应用于测试环节

           mvn clean package命令  先执行clean,再执行package,将项目打包,通常应用于发布前

           mvn clean install 查看仓库,当前项目被发布到仓库中 先执行clean,再执行install,将项目打包,通常应用于发布前

    M2Eclipse

          M2Eclipse是eclipse中的maven插件

          安装   1  复制包到eclipse中的dropins目录

          

               2 查看是否有maven插件

       

            3 设置maven安装目录

           

            4 设置用户配置

      

    坐标 :

             唯一标识一个jar包,方便机器经行查找   

            groupId:定义当前Maven组织名称

             artifactId:定义实际项目名称

            version:定义当前项目的当前版本

    依赖管理:

           对项目中jar 包的管理。可以在pom文件中定义jar包的GAV坐标,管理依赖。

         

     1 依赖范围scope 用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下

    1.compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效

    2.test:测试依赖范围。只对于测试classpath有效

    3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api

    4.runtime:运行时提供。例如:jdbc驱动

           2  直接依赖和间接依赖

               如果B中使用A,C中使用B,则称B是C的直接依赖,而称A是C的间接依赖

    C->B                   B->A

    C直接依赖B

    C间接依赖A

      依赖范围对传递依赖的影响

    左边第一列表示第一直接依赖范围

    上面第一行表示第二直接依赖范围

    中间的交叉单元格表示传递性依赖范围。

    总结:

    • 当第二依赖的范围是compile的时候,传递性依赖的范围与第一直接依赖的范围一致。
    • 当第二直接依赖的范围是test的时候,依赖不会得以传递。
    • 当第二依赖的范围是provided的时候,只传递第一直接依赖范围也为provided的依赖,且传递性依赖的范围同样为 provided;
    • 当第二直接依赖的范围是runtime的时候,传递性依赖的范围与第一直接依赖的范围一致,但compile例外,此时传递的依赖范围为runtime;

     3 依赖冲突

    • 如果直接与间接依赖中包含有同一个坐标不同版本的资源依赖,以直接依赖的版本为准(就近原则)
    • 如果直接依赖中包含有同一个坐标不同版本的资源依赖,以配置顺序下方的版本为准(就近原则)

    4  可选依赖

    <optional> true/false 是否可选,也可以理解为是否向下传递。

    在依赖中添加optional选项决定此依赖是否向下传递,如果是true则不传递,如果是false就传递,默认为false。

      5  排除依赖

    排除依赖包中所包含的依赖关系,不需要添加版本号

    如果在本次依赖中有一些多余的jar包也被传递依赖过来,如果想把这些jar包排除的话可以配置exclusions进行排除。

     生命周期:

              生命周期就是为了对所有的构建过程进行抽象和统一。包括项目清理、初始化、编译、打包、测试、部署等几乎所有构建步骤

    l  Clean Lifecycle: 在进行真正的构建之前进行一些清理工作。

    l  Default Lifecycle: 构建的核心部分,编译,测试,打包,部署等等。

    l  Site Lifecycle: 生成项目报告,站点,发布站点。

    再次强调一下它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。

    Maven插件

    Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的。每个插件都能实现一个功能,每个功能就是一个插件目标。Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务。

    例如compile就是插件maven-compiler-plugin的一个插件目标

    继承

    聚合

    聚合一般是一个工程拆分成多个模块开发,每个模块是一个独立的工程,但是要是运行时必须把所有模块聚合到一起才是一个完整的工程,此时可以使用maven的聚合工程。

    例如电商项目中,包括商品模块、订单模块、用户模块等。就可以对不同的模块单独创建工程,最终在打包时,将不同的模块聚合到一起。

    例如同一个项目中的表现层、业务层、持久层,也可以分层创建不同的工程,最后打包运行时,再聚合到一起。

    Maven仓库管理

    用来统一存储所有Maven共享构建的位置就是仓库。根据Maven坐标定义每个构建在仓库中唯一存储路径大致为:groupId/artifactId/version/artifactId-version.packaging

      仓的分类

    1、本地仓库

    ~/.m2/repository

    每个用户只有一个本地仓库

    2、远程仓库

    l  中央仓库:Maven默认的远程仓库,不包含版权资源

                  http://repo1.maven.org/maven2

    l  私服:是一种特殊的远程仓库,它是架设在局域网内的仓库

  • 相关阅读:
    解题:POI 2009 TAB
    解题:POI 2015 Pieczęć
    解题:POI 2013 Taxis
    解题:POI 2015 Kinoman
    题目1012:畅通工程(并查集)
    并查集深入分析
    题目1186:打印日期(日期计算)
    C/C++如何整行读入字符串?
    四种方法解决最大连续子序列和问题
    题目1011:最大连续子序列
  • 原文地址:https://www.cnblogs.com/whesuanfa/p/7471799.html
Copyright © 2020-2023  润新知