1.1 Maven 概述

Maven提供了一套软件项目管理的综合性方案.无论是编译,发布,文档还是团队协作,Maven提供了必要的抽象,它鼓励重用,并做了除了软件构建以外的许多工作.

1.1.1 什么是Maven

Maven是一套项目管理框架,但这并不是Maven的全部.它是Maven作者能想得到的最显而易见的三句话定义.但是这个名字是个毫无意义的抽象,它并没有表达出Maven的强大功能和复杂性.太多的技术人员经常使用三四个关键词,来描述复杂的课题,并且重复的使用诸如"project management"和"enterprise software start"而没有能表达出其具体的含义.

当某人想要了解Maven是什么时,他们通常会问"到底Maven是个什么东东?",然后他们期待着一个短小的,概述的回答,"嗯,它是一个构建工具,或者是一个脚本框架". Maven无法使用乏味的,毫无意义的单词来解释清楚.它是一个思想,标准以及软件的综合体,并且几乎不可能去提取出一个定义为一个简单的,概述性的定义.创新的思想往往很难用语言表达清楚.如果你对Maven的一个全面的,丰富的定义感兴趣的话,你可以阅读本介绍.它会首先想你提供所要遵循的概念和理论. 如果你阅读本介绍,只是为了寻找某些内容来告诉你的主管的话,你可以现在就转到第二章去了.

如果Maven不是一个"项目管理框架",那它是什么呢? 下面是一种描述:Maven是标准、存储格式以及一些软件用以管理和描述项目。它为构建、测试、部署项目定义了一个标准的生命周期。它提供了一个框架,允许遵循Maven标准的所有项目,方便的重用公用的构建逻辑。Maven项目存在的Apache软件基金会,是一个开源社区,它开发的软件工具,基于一个通用的软件对象模型(Project Object Model),也就是POM。本书重点关注Maven项目的核心部分——Maven 2,一个非常好的工具,它大大简化了软件项目的管理流程。

你可能曾经期待过一个更为浅显易懂的答案,或许你捡起这本书是因为某人曾经告诉过你Maven是一个构建工具。别担心,Maven可以做一个你要寻找的构建工具,并且很多使用Maven作为另外的构建工具的开发者们,都得到了一个很好的经过调优的构建系统。当你打算将Maven作为“另一个构建工具”的时候,以这种有限的眼光去看待Maven,就如同去说Web浏览器不过是看看超文本罢了。

Maven以及与其相关的技术,开始在Java社区产生了一种变革。

除了解决浅显易懂,以及诸如简化构建、文档、发布以及部署的流程等问题以外,Maven也带来了越来越引人注目的好处。

越来越多的项目和产品使用Maven作为他们项目管理的基础。它变得易于在项目和构建系统建立关系,并且在这个关系之上导航和做报告。Maven的标准格式允许为项目编码使用一种“Semantic Web”。Maven的规范和中央仓库为项目定义了一种全新的命名系统。使用Maven可以很容易的加入其他的依赖项,并发布你自己的组件。

那么,现在来回答当初的问题:Maven对于不同的人有不同的用途。它是一系列标准和解决问题的方式,而不仅仅只是一个软件。它是一种将一系列软件,使用统一的格式来描述,作为一个个互相依存的组件集合来处理的方式。它是个人和团体如何协作来开发软件系统的未来发展方向。一旦你理解了Maven,你就会奇怪以前没有它是怎么做的开发。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/abigfrog/archive/2008/10/20/3109352.aspx

一,什么是maven:

Maven是什么? 比较正式的定义:Maven是一个项目管理工具,它包含了:

一个项目对象模型 (Project Object Model),

一组标准集合,

一个项目生命周期(Project Lifecycle),

一个依赖管理系统(Dependency Management System),

和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

二,如何配置maven:

1,从网站http://maven.apache.org/download.html 获取maven2的文件包;

2,解压该maven包,并配置一下环境变量:

在系统变量里的添加path :D:dev filesapache-maven-2.0.9-binapache-maven-2.0.9bin

3,在dos下输入命令:mvn  -v,如果配置正确将会得到maven的版本信息等。

三,如何简单使用maven构建一个项目:

1,在dos下进入要创建项目的目录,如C盘;

2,输入命令创建项目(以实际五彩石项目为例):

mvn archetype:create -DgroupId=com.taobao.mytest -DartifactId=five-stone

3,命令执行完成后会在当前目录下生成下面的文件结构:

4,查看自动生成的默认的pom.xml文件内容:

5,配置文件的相关说明:

groupId:项目或者组织的唯一标志,并且配置时生成的路径也是由此生成,  如com.taobao.mytest生成的相对路径为:/com/taobao/mytest

artifactId: 项目的通用名称

packaging: 打包的机制,如pom, jar, maven-plugin, ejb, war, ear, rar, par

version:项目的版本

name: 项目的名称, Maven 产生的文档用

url: 哪个网站可以找到这个项目,提示如果 Maven 资源列表没有,可以直接上该网站寻找,   Maven 产生的文档用,一般有自己的资源库时不需要此项。

6,运行以下命令:

C:five-stone>mvn -U clean eclipse:clean eclipse:eclipse

C:five-stone>mvn -U clean eclipse:clean eclipse:eclipse -DdownloadSources=true

7,eclipse加载项目,至此搭建完成。

8,一些常用相关的命令操作:

在测试方法里增加一条打印的语句:

mvn test:运行应用程序中的单元测试(testApp()),将输出“welcome to taobao!”


      mvn package:依据项目将在target文件下生成jar文件:five-stone-1.0-SNAPSHOT.jar

mvn clean:清除目标目录中的生成结果
      mvn install:    将项目的jar文件添加到资源库中, 以备依赖此项目时使用
      mvn eclipse:eclipse:生成Eclipse项目文件,此时项目可以成功import到eclipse中

———————————————————

至此,maven2的入门实践操作到此结束,如果按照上面的步骤能成功的完成到最后,那么你已经具备了最基本的项目构建能力。但是事实上,这些都是最基础的,如果想进一步了解如何管理自己的项目,那么就不能不说到两个核心的配置文件:pom.xml和setting.xml。关于配置文件的理解和maven2的深入学习将在下篇文章提到,欢迎继续关注,谢谢!

maven2学习总结(1,入门起步与实践)相关推荐

  1. numpy pytorch 接口对应_拆书分享篇深度学习框架PyTorch入门与实践

    <<深度学习框架PyTorch入门与实践>>读书笔记 <深度学习框架PyTorch入门与实践>读后感 小作者:马苗苗  读完<<深度学习框架PyTorc ...

  2. 2021-春季学习-智能车技术创新与实践-Lesson3

    课程内容 ▌01 课程背景 1.课程简介 2.第三周课程内容 本周理论课程内容为: 本周实验内容 ▌02 课程内容准备 ▌01 课程背景 1.课程简介 具体内容参见: 智能车技术创新与实践(01510 ...

  3. 2021-春季学习-智能车技术创新与实践-Lesson2

    课程内容 ▌01 课程背景 1.课程简介 2.[课程预告] 3.Linux以及ROS自学简介 4. ROS相关资料 (1)ROS-WiKi ▌02 课程设计 1.机器人操作系统ROS简介:SC21 S ...

  4. 2021-春季学习-智能车技术创新与实践-Lesson 1

    ▌01 课程背景 1.课程简介: 具体内容参见: 智能车技术创新与实践(01510422-90)课程简介 上课时间地点: 星期六第1节(前八周),六教6A211: 星期六第2节(前八周),六教6A21 ...

  5. 2021-春季学习-智能车技术创新与实践(90)

    ▌01 课程的基本信息 1.课程基本信息 课程简介: 智能车技术创新与实践(01510422-90)课程简介 上课时间地点: 星期六第1节(前八周),六教6A211: 星期六第2节(前八周),六教6A ...

  6. 【百家稷学】深度学习与计算机视觉核心理论与实践(中国地质大学实训)

    继续咱们百家稷学专题,本次是有三AI在中国地质大学进行的暑期课程教学.百家稷学专题的目标,是走进100所高校和企业进行学习与分享. 分享主题 本次分享是在中国地质大学机械与电子信息学院进行,主题是&l ...

  7. 强化学习之基础入门_强化学习基础

    强化学习之基础入门 Reinforcement learning is probably one of the most relatable scientific approaches that re ...

  8. 如何学习Linux / 新手入门

    如何学习Linux / 新手入门 一.从基础开始:常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基础的.例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用 ...

  9. asp.net从入门到精通配套课件_MATLAB从入门到算法实践第八期本周六直播

    推荐Matlab算法经典课程,此课程已经经过7次升级和打磨,累计超过3000多人学习,想从零基础入门和想提高Matlab编程水平的同学推荐加入学习. 讲师介绍 董辰辉 Matlab 畅销书主编.上市公 ...

最新文章

  1. linux操作系统的特点有哪些,LINUX操作系统有哪些概念和特点?
  2. 【边缘计算】边缘计算元年一文看懂云边协同!九大场景带来新一轮信息革命...
  3. DevOps Troubleshooting(1)-运维思想
  4. Bitbucket Pipelines在Atlassian的Bitbucket云上提供持续交付功能
  5. 【研究院】滴滴研究院,都在做什么
  6. java获取web.xml 参数_解析web.xml中在Servlet中获取context-param和init-param内的参数
  7. SAP Gateway service language determination
  8. 软件测试b s环境如何配置,B/S架构测试环境搭建_DB2篇(Win32系统)
  9. 信息学奥赛一本通 1245:不重复地输出数 | OpenJudge NOI 1.11 08:不重复地输出数
  10. oracle游标多线程,多线程jdbc游标分页查询原理 oracle和mysql分页
  11. 如何在Vue中使用Font Awesome?
  12. Linux篇 | 磁盘存储和文件系统
  13. OO第二次课程总结分析
  14. mysql tuner sh_MySQL性能提议者:mysqltuner.pl
  15. html5与access连接数据库操作,access是一个什么数据库?
  16. 练习时长两年半的Matlab
  17. 三级缓存 SD—内存—网络
  18. mysql指定取值范围_MySQL中各种字段的取值范围(转)
  19. golang 实现数据结构-顺序栈
  20. Ilog cplex, java 表示分段线性函数 piecewise function

热门文章

  1. Jenkins 笔记
  2. XeLaTeX插入GB/T 7714-2005规范的参考文献方法
  3. tornado学习笔记18 _RequestDispatcher 请求分发器
  4. B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序...
  5. Oracle中的Union、Union All、Intersect、Minus
  6. QWidget: Must construct a QApplication before a QPaintDevice
  7. 微软计划2008年初发布Windows Server2008
  8. 马化腾:用户体验的10/100/1000法则
  9. Java socket调用Http协议Get请求
  10. SpringBoot整合Mybatis,使用通用mapper和PageHelper进行分页