美文网首页
Maven详解

Maven详解

作者: 丿九尾狸猫 | 来源:发表于2018-08-03 10:00 被阅读17次

    Maven用了半年多了,现在基本的使用已经可以了,在这里进行一个总结,加深印象,同时帮助小白快速上手Maven

    一、什么是Maven?
    Maven是一个项目构建工具,能把项目抽象成一个POM(project object model),使用POM文件对项目进行构建、打包、文档化等操作。最重要的是解决了项目依赖的问题,简化项目环境搭建的过程;

    二、为什么用Maven?
    Maven最核心的功能:解决复杂项目依赖的问题。怎么说?比如说你在项目中需要用到第三方jar包(如Mysql驱动),去哪找呢。如果一个还好,到一个复杂的项目通常由几十甚至上百个依赖组成,一个一个找怕不是累死?而Maven就解决了这个问题,比如Mysql驱动,只需要加入下面这一句即可:
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${mysql-connector.version}</version>
    </dependency>

    是不是很方便?

    另一方面,项目的测试、打包、部署等操作,Maven也进行了简化,同时对项目的结构有了统一的规范和约定,如源码统一存放在src/main/java下,测试代码统一存放在src/test/java下,资源文件统一存放在src/resources下,编译后字节码存放在target目录下等等。

    一句话,Maven让技术人员能够专注在业务逻辑上,极大提高了开发效率;

    三、我的jar都是哪来的?
    依赖仓库有多种,位于Apache的中心仓库http://mvnrepository.com/,柜内外也有大量镜像库,如阿里云的Maven仓库,会与中心仓库进行同步;同时可以创建公司私库,用来发布和存放库以提高下载速度或存放公司私有的jar便于统一管理;

    无论依赖的jar来自哪个仓库,在开发人员本地,Maven都会创建一个本地仓库用于缓存已经下载的jar,避免每次从仓库下载,默认地址为用户文件夹下的.m2隐藏文件夹中。

    四、Maven配置
    Maven最核心的是pom.xml,使用xml方式描述项目模型,pom通常有以下元素:

    groupId:表示项目所属的组,通常是一个公司或组织的名称,如:org.springframework;
    artifactId:项目唯一标识,如mysql-connector-java;
    packaging:项目打包方式,通常有war和jar两种;
    version:项目版本号;


    注:
    通常来说,项目版本号分为三段,主版本号.次版本号.修订版本号。主版本号变动代表架构变动或不兼容实现,次版本号是兼容性修改、功能增强,修订版本号则是bug修复。版本后缀意味着不同的项目阶段,SNAPSHOT表示正在开发中的版本,会修复bug和添加新的功能;RELEASE表示一个正式的版本,中间可能还有M1,M2(M代表里程碑,即将发布)、RC(Release Candidate,发布候选)、GA(General Availiable,基本可用版本)等表示即将发布前的各个过程。SNAPSHOT<M1<M2<...<RC<GA<RELEASE


    modelVersion:pom的Maven版本,目前是4.0.0;
    dependencies:此元素下包含多个dependency,用来声明项目依赖,是pom中最核心的部分;
    dependency:包含在dependencies中,用来声明项目依赖

    dependency所包含的元素如下:


    groupId、artifactId、version这三个与上面描述相同,不再赘述;
    scope:代表此类库与本项目的关系,默认是compile,也就是编译打包都需要此类库;test表示尽仅在单元测试的时候需要;provided表示编译阶段需要此类库,带打包阶段不需要,因为项目环境中已经提供了;runtime表示编译和打包的时候都不需要,但运行的时候需要,如mysql驱动包;
    optional:true/false,默认false,激活时代表该依赖仅在本项目中使用,子项目需要时需要重新写入该依赖;


    bulid:此项在pom中可选,bulid包含了多个插件plugin用来辅助项目构建。
    <build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
    <source>1.8</source>
    <target>1.8</target>
    <encoding>UTF-8</encoding>
    </configuration>
    </plugin>
    </plugins>
    </build>
    早期Maven默认的Java版本是1.6,此处显式声明使用Java1.8编译,源代码使用的是UTF-8

    五、其他:
    关于Maven的安装、环境变量配置、阿里云镜像切换,IDE集成网上有很多资源,这里不再赘述;

    相关文章

      网友评论

          本文标题:Maven详解

          本文链接:https://www.haomeiwen.com/subject/awzevftx.html