zoukankan      html  css  js  c++  java
  • Maven--->学习心得--->maven 概述

    1.maven是什么:(概述)

        Apache Maven是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。Maven可以被用在Java开发,或任何其他的编程语言的任何项目,让开发人员的工作更轻松。概括地说,Maven简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。 Maven增加可重用性并负责建立相关的任务。

        最初设计Maven是为了简化Jakarta Turbine项目的建设。当时存在好几个项目,每个项目包含了不同的Ant构建文件、 JAR检查到CVS。为了促进这几个项目之间的交流合作,以及更方便地同时管理这若干个项目,Apache组织开发了Maven。使用Maven可以同时建立多个项目,发布项目信息,项目部署,在几个项目中传递JAR文件从而促进团队合作和帮助。

        maven的工作原理是POM(Project Object Model)。POM将每一个工程看做一个可管理的对象,POM中管理该project的所有东西,包括该project的创建人信息、项目的 licenses、项目代码的存放位置信息( URL of where the project lives)、该项目的所有三方依赖(dependencies)、配置文件等等,一个POM包含一个项目的所有必须的信息,你只需要查看该project的POM就可以知道所有你想知道的该项目的相关信息。当然,POM的实现机制实际上是一个XML配置文件,pom.xml。

    2.maven的具体功能包括:(maven功能详述)

         2.1简化和标准化软件项目建设过程,从而使得编译,分配,文档,团队协作和其他任务能够无缝连接

        • 使用maven管理的项目有标准的目录结构,使得不同project有相同或相近的目录结构,这样程序会更易读
        • maven生命周期(the default/clean/site lifecycle)以及组成这些lifecycle的各个阶段(phase)都是maven定义好的,执行mvn <phase>就会顺序执行具体lifecycle的若干个phase。这个过程也可以看做是maven标准化了project的compile、package、install等操作过程,使得整个project的build过程的各个阶段得到无缝连接。
        •      

         2.2 Aphache maven 是一种创新的软件项目管理工具,提供了一个项目对象模型(POM)文件的新概念来管理项目的构建,相关性和文档。

          2.3maven 最强大的功能就是能够自动下载项目依赖库。

        • 这样一来有三大好处:
          • 第一,开发过程中不用到相关网站手动下载软件开发包然后copy所依赖的jar包到相应的工程中,只需要配置一下pom.xml就可以了,之后maven会根据你的pom.xml自动查找下载你的项目所依赖的jar包;
          • 第二,当项目所依赖的jar包有更新时,你也可以不用管,maven会自动帮你下载更新相应的jar包到本地maven仓库。当然,这也是需要在pom.xml中实现配置好,maven才会帮你自动更新项目所依赖的jar包。
          • 第三,Dependencies can be direct (e.g. my application depends on Spring at runtime), or indirect (e.g. my application depends on commons-dbcp which depends on commons-pool). The indirect dependencies are also known as "transitive" and it is those dependencies that are hardest to identify and manage.也就是说:有些依赖是直接依赖,你的项目依赖一个jar包,你将该jar包直接导入进来就可以了。但是有些时候,你的项目所依赖的jar包又依赖于其他jar包,这种时候管理三方jar包以及三方jar包所依赖的其他jar包就会变得非常复杂,然而借助于maven这个软件项目管理工具,就可以避免上述麻烦。
          • 更多详细信息可以参见如下链接Maven依赖机制

    3.如何使用maven:(maven关键知识点)

        概述:要想使用maven这个软件工程管理工具,就必须先要了解maven的相关技术知识点,只有把这些知识点都理解清楚了,才能将maven这个工具的作用发挥到极致。

        3.1Maven项目的结构和内容在一个XML文件中声明,pom.xml 项目对象模型(POM),这是整个Maven系统的基本单元。pom.xml中定义了项目的构建、相关性和文档。更多详细信息,请参阅Maven POM的部分。

         3.2 要想使用Maven去管理你的软件项目,首先要在你的计算机中搭建maven环境,具体如何搭建与配置maven,请参见Windows系统下安装配置apache

         3.3 了解并熟记maven相关术语

          • Maven本地资源库(存在于本地计算机中)
            Maven 的本地资源库是用来存储项目的依赖库,默认的文件夹是 “.m2” 目录,可能需要将其更改为另一个文件夹。此处的链接有将maven本地资源库的默认路径改为自定义路径的方法。
          • Maven中央存储以及其他远程库(存在于Internet远端服务器中)
              • 概述:Maven 中央存储库是 Maven 用来下载所有项目的依赖库的默认位置。当maven本地仓库中没有你的项目所依赖的某个jar包时,maven会自动从maven中央存储库下载相关jar包到你的maven本地资源库中,也就是说maven会在联网的情况下自动从maven中央存储库(Internet远端服务器)下载开发者的项目所依赖的jar包到开发者的 本地计算机 中。默认情况下,Maven从Maven中央仓库下载所有依赖关系。但是,有些库并不存在于在中央存储库,只有在Java.net或JBoss的储存库远程仓库中能找到。关于maven默认中央存储库和自定义其他远程仓库的区别与联系,详情参见如下链接:
              • 默认中央存储库Maven的默认中央存储库
              • 自定义添加其他远程库如何添加远程库?
          • 如何从Maven远程存储库下载?
              • 触发机制:当项目中有新的依赖产生时(包括jar包依赖等),或者远程仓库(包括中央仓库和其他远程库)中项目所依赖的某些jar包版本有更新时,都会自动触发maven本地仓库的更新动作
              • maven本地仓库的更新过程如下
                使用maven管理的软件项目工程,也即maven project,有新的依赖(包括jar包依赖等)产生时,maven会先查找计算机本地的mavenLocalRepository目录下是否已经存在相关jar包,若不存在,maven会自动从默认的远程库(也即默认maven中央仓库)中查找并下载相关jar包,若是默认中央仓库也没有查找到工程所依赖的jar包,maven会继续从pom.xml中由开发者自定义添加的其他远程仓库去下载项目所依赖的jar包,若本地仓库---->默认中央仓库---->自定义其他远程仓库都没有查找到项目所依赖的jar包,maven将会报错。
              • 实例:一个使用maven管理的软件项目,参见如下链接Maven依赖机制
          • 定制库到Maven本地资源库
            很多库仍然不支持 Maven 的 pom.xml 的概念,这里有一个指南来说明如何包括“非Maven支持”库到 Maven 本地资源库中。

    4.实际操作:我的第一个使用maven管理的java web软件项目

         step1,在你的计算机中安装配置Apache maven,具体操作步骤参见Windows系统下安装配置apache maven 

         step2,修改maven本地资源库的存储路径,(由默认路径改为自定义路径),参见链接:Maven本地资源库

         step3,了解maven能帮你做什么。如maven可以为你的工程管理工程所依赖的jar包(包括自动下载、自动更新项目所依赖的三方jar包,这样项目依赖的jar包有更新时你就不用每次都自己下载相关jar包、copy相关jar包到项目目录,而是把这些工作都托付给maven来帮你做。但是maven如何知道它应该为你的项目管理哪些jar包呢?答:通过你定义的pom.xml文件知道。)Maven依赖机制

          step4,建立你的软件工程(如java工程、java web工程等),并且为你的软件工程引入maven这个管理工具。为项目添加pom.xml就是为项目引入了maven管理工具。然后你就可以通过编写pom.xml来告诉maven如何帮助你管理你的项目。

         step5,使用maven管理你的项目,具体有很多用法,可以参见本文第五部分内容

    5.maven进阶---使用过程中遇到的一些问题在这一部分进行总结(若干实例)

         实例一、更改maven的本地资源库的存储路径(由默认路径改为自定义路径),参见链接:Maven本地资源库

         实例二、使自己的软件工程能够自动添加项目所依赖的jar包并且自动更新,参见如下链接Maven依赖机制

          这里面包含三种情况,

           状况一:当项目所依赖的jar包存在于maven默认中央仓库中时,如何配置pom.xml     Maven中央存储库

           状况二:当项目所依赖的jar包不存在于默认maven中央仓库时,如何配置pom.xml其他远程仓库   如何添加远程库?

           状况三:如何使不支持maven的pom.xml的jar文件被包含到maven的local repository   定制库到Maven本地资源库

    参考资料:

      【1】http://www.yiibai.com/maven/

      【2】maven官方网站

    学习的过程中总会得到一些心得体会,认真地将它们记录下来并分享给每一个愿意花费时间去阅读它们的人,然后意外地收获某个读者的评论,从而激发出新的感想,是一件十分令人欢快的事。如果你也在研习这方面的知识,欢迎加入到我们的队伍中来,和我们一起进步吧(^_^)
  • 相关阅读:
    HDU 1075 What Are You Talking About(字典树)
    HDU 1075 What Are You Talking About (stl之map映射)
    HDU 1247 Hat’s Words(字典树活用)
    字典树HihoCoder
    HDU 1277全文检索(字典树)
    HDU 3294 Girls' research(manachar模板题)
    HDU 3294 Girls' research(manachar模板题)
    HDU 4763 Theme Section(KMP灵活应用)
    Ordering Tasks UVA
    Abbott's Revenge UVA
  • 原文地址:https://www.cnblogs.com/lxrm/p/6116668.html
Copyright © 2011-2022 走看看