Maven

作者: 乐傻驴 | 来源:发表于2017-09-09 09:46 被阅读68次

    简介

            MavenApache软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和依赖管理

    Logo

    构建是一个项目从编写源代码到编译、测试、运行、打包、部署、运行的过程

    传统构建:
    1.在eclipse中创建一个java web工程
    2.在工程中编写源代码及配置文件等
    3.对源代码进行编译,java文件编译成class文件
    4.执行Junit单元测试
    5.将工程打成war包部署至tomcat运行
    
    Maven构建:
    1.清理:删除以前的编译结果,为重新编译做好准备。
    2.编译:将 Java 源程序编译为字节码文件。
    3.测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
    4.报告:在每一次测试后以标准的格式记录和展示测试结果。
    5.打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web工程对应 war 包。
    6.安装:在 Maven 环境下特指将打包的结果——jar 包或 war 包安装到本地仓库中。
    7.部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。
    

    Maven将项目构建的过程进行标准化,每个阶段使用一个命令完成

    清理阶段对应maven的命令是clean,清理输出的class文件
    编译阶段对应maven的命令是compile,将java代码编译成class文件。
    打包阶段对应maven的命令是package,java工程可以打成jar包,web工程可以打成war包
    运行一个maven工程(web工程)需要一个命令:tomat:run
    

    什么是依赖管理呢?
            一个java项目可能要使用一些第三方的jar包才可以运行,那么这个java项目依赖了这些第三方的jar包。
            依赖管理就是对项目所有依赖的jar包进行规范化管理。

    传统项目的依赖管理

            传统的项目工程要管理所依赖的jar包完全靠人工进行,我们需要从网上下载jar包添加到项目工程下的WEB-INF/lib目录下。手工拷贝jar包添加到工程中可能会产生一些问题:

    1.没有对jar包的版本统一管理,容易导致版本冲突
    2.从网上找jar包非常不方便,有些jar可能找不到
    3.jar包添加到工程中导致工程过大
    
    Maven项目的依赖管理

            Maven项目管理所依赖的jar包不需要在手动的往项目工程WEB-INF/lib目录下添加jar包,只需要在pom.xml(Maven工程的配置文件)添加jar包的坐标,自动从Maven仓库中下载jar包,使用Maven依赖管理添加jar的好处:

    1.通过pom.xml文件对jar包的版本进行统一管理,避免了版本冲突问题
    2.Maven团队维护了一个非常全面的Maven仓库,里边包括了当前使用的jar包,Maven工程可以自动从Maven仓库下载jar包
    
    通过进行对比我们得出使用Maven的好处:
    1.一步构建:maven对项目构建的过程进行标准化,通过一个命令即可完成构建过程
    2.依赖管理:Maven工程不用手动导jar包,通过在pom.xml中定义坐标从maven仓库自动下载,方便且不易出错
    3.跨平台:可在window、linux上使用
    4.Maven遵循规范开发有利于提高大型团队的开发效率,降低项目的维护成本
    

    使用

    一、下载:

    下载地址:https://maven.apache.org/download.cgi

    解压:

            对下载的压缩包进行解压,解压的目录不要有空格和中文

    目录结构

    bin目录:该目录包含了Mavne运行的脚本,其中 mvn.bat (表示以run方式运行项目)、 mvnDebug.bat(表示以debug方式运行项目)
    boot目录:Maven运行需要类加载器
    conf目录:该目录包含了一个非常重要的文件settings.xml,Maven的核心配置文件
    lib目录:该目录包含了所有Maven运行时需要的Java类库

    二、配置环境变量

    前提:需要java环境,需要配置JAVA_HOME
    1.配置 MAVEN_HOME

            变量名为MAVEN_HOME或M2_HOME,变量值为你Maven解压放入的位置

    2.将 %MAVEN_HOME%/bin 加入环境变量 path
    3.在控制台输入mvn -v命令检查Maven是否安装成功,看到Maven的版本为3.5.0安装成功。

    三、配置本地仓库

            Maven的工作需要从仓库下载一些jar包,本地的项目都会通过Maven软件从远程仓库(可理解为互联网上的仓库)下载jar包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。

    本地仓库 :

            用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找 默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示windows用户目录。

    远程仓库:

            如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内。

    中央仓库 :

            在Maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目构件。
            由于某些原因,,创建project后,总是要等待很长时间加载所需jar包,可以选择使用阿里云提供的中央仓库。

    方式一:在setting.xml配置文件中添加配置

    打开Maven根目录下conf文件夹中的setting.xml文件,找到<mirrors></mirrors>标签对,添加如下内容:

    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
    
    方式二:在pom.xml中直接添加
    <!--代码库-->
    <repositories>
        <repository>
            <id>maven-ali</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public//</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </snapshots>
        </repository>
    </repositories>
    
    配置本地仓库:
            1.在没网的情况下我们是无法从互联网仓库中下载jar包的,我们需要将整理好的jar包放入自己本地目录下
            2.在MAVE_HOME/conf/settings.xml文件中配置本地仓库位置:

    四、全局setting与用户setting

    Maven仓库地址、私服等配置信息需要在setting.xml文件中配置,分为全局配置和用户配置。

    1.Maven安装目录下的conf/setting.xml文件,用于Maven的所有project项目,它作为Maven的全局配置
    2.如需要个性配置则需要在用户配置中设置,用户配置的setting.xml文件默认的位置在:${user.dir}/.m2/settings.xml目录中
    3.Maven会先找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件

    五、Maven项目整体目录结构

    Project
    |-src
    |   |-main
    |   |  |-java        —— 存放项目的.java文件
    |   |  |-resources   —— 存放项目资源文件,如Spring, hibernate,MyBatis配置文件
           |-webapp      —— webapp目录是web工程的主目录
           |-WEB-INF
           |-web.xml
    |   |-test
    |      |-java        ——存放所有测试.java文件,如JUnit测试类
    |      |-resources   —— 测试资源文件
    |-target             —— 项目输出位置例如.class、.jar、.war文件
    |-pom.xml            ——Maven项目核心配置文件
    

    相关文章

      网友评论

          本文标题:Maven

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