• 了解Maven的基本知识


         我的博客地址:https://www.cnblogs.com/themysteryofhackers/p/11934540.html

         更新时间:2019-11-26

    一、Maven的基本概念

          Maven(翻译为"专家","内行")是跨平台的项目管理工具(项目构建工具)。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。

    二、什么是项目构建工具

          项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。

    三、使用Maven的好处

    • Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定。

    • Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程

    • 只需要定义一个pom.xml,用来放置项目的一些依赖,然后把源码放到默认的目录,Maven帮我们处理其他事情

    • 使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。

    • 可以大大的减少项目的大小,因为jar包都在Maven仓库中。

     

    四、maven项目坐标

         Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范。拥有了统一规范,就可以把查找工作交给机器。(maven项目坐标是项目唯一的标)

    • groupId:组织标识(包名)

    • artifactId:项目名称

    • version:项目的当前版本

    • packaging:项目的打包方式,最为常见的jar和war两种

     

    五、Maven项目的目录约定

     MavenProjectRoot(项目根目录)

        |----src

        | |----main

        | | |----java ——存放项目的.java文件

        | | |----resources ——存放项目资源文件,如spring, hibernate配置文件

        | |----test

        | | |----java ——存放所有测试.java文件,如JUnit测试类

        | | |----resources ——存放项目资源文件,如spring, hibernate配置文件

        |----target ——项目输出位置

        |----pom.xml ----用于标识该项目是一个Maven项目 

    六、Maven的常用命令

    • mvn compile

      编译项目

    • mvn clean

      清空编译文件

    • mvn test

      测试项目(测试前会先执行编译,自动调用test文件夹下的测试案例)

    • mvn package

      打包项目

    • mvn install

      添加到maven本地仓库

    过程

    【清理】→【编译】→【测试】→【打包】→【仓库】

     

    七、Maven仓库分类

    • 本地仓库

      每个用户只有一个本地仓库,默认是在~/.m2/repository/,~代表的是用户目录(而实际在项目中使用的maven本地仓库是你自己安装的repository仓库,而不是用户目录下的那个仓库)

    • 中央仓库

      Maven默认的远程仓库,URL地址:http://search.maven.org/

    • 私有仓库

      公司仓库(私服)

     

    八、jar包的直接依赖和传递依赖

         直接依赖:直接在Maven项目中导入的jar包依赖,就是该项目的直接依赖包。

         传递依赖:在Maven项目中没有导入jar包依赖,而这个项目依赖于别的项目,通过别的项目传递过来的jar包依赖就是传递依赖包。

     

    九、Maven项目jar包冲突的解决方法

         解决jar包冲突的方式一:

         先声明优先原则,就是这个jar包的坐标在pom.xml中文件声明的位置越上,那么这个jar包就优先导入项目中。

        解决jar包冲突的方式二:

        路径近者优先原则,直接依赖的路径比传递依赖的路径近,项目最终导入的jar包是路径近的直接依赖的jar包。

        解决jar包冲突的方式三:

        直接排除的方法,我们要排除某个jar包下的依赖包,在pom.xml 文件中的某个有冲突的依赖下,添加exclusions标签,在exclusions标签下的exclusion标签填写jar包的groupId(组织标识)和artifactId(项目名称),可以不写版本号,因为此时你要排除的jar包的版本号和你写在哪个依赖项目的版本号一样。格式如下。

     1 <dependencies>
     2         <dependency>
     3             <groupId>org.springframework</groupId>
     4             <artifactId>spring-context</artifactId>
     5             <version>5.1.2.RELEASE</version>
     6         </dependency>
     7         <dependency>
     8             <groupId>org.springframework</groupId>
     9             <artifactId>spring-beans</artifactId>
    10             <version>4.3.12.RELEASE</version>
    11             <exclusions>
    12                 <exclusion>
    13                     <groupId>org.springframework</groupId>
    14                     <artifactId>spring-core</artifactId>
    15                 </exclusion>
    16             </exclusions>
    17         </dependency>
    18 </dependencies>

         我是一个Java程序员,一个向往技术的小白,以后我会陆续将自己学习到的Java或者其他的知识会以博客的形式分享出来,希望能对大家有帮助。

         喜欢小编的就给我一个关注吧!

         如果有哪些问题、有哪些不妥或者侵犯到您的权益的地方,可以联系我,我马上修改。

  • 相关阅读:
    老王讲架构:负载均衡
    支付宝系统架构内部剖析
    Effective Java 第三版——61. 基本类型优于装箱的基本类型
    Effective Java 第三版——60. 需要精确的结果时避免使用float和double类型
    Effective Java 第三版——59. 熟悉并使用Java类库
    Effective Java 第三版——58. for-each循环优于传统for循环
    Effective Java 第三版——57. 最小化局部变量的作用域
    Effective Java 第三版——56. 为所有已公开的API元素编写文档注释
    Effective Java 第三版——55. 明智而审慎地返回Optional
    Effective Java 第三版——54. 返回空的数组或集合不要返回null
  • 原文地址:https://www.cnblogs.com/themysteryofhackers/p/11934540.html
Copyright © 2020-2023  润新知