Maven 是干什么的,为什么要用【整理】

Maven是什么,以及为什么要使用Maven

Maven是什么,以及为什么要使用Maven

参考书籍(推荐大家购买实体书):《Maven实战》(国内首本Maven著作)(Maven的安装、配置及使用入门)

1.概述

Maven是一个构建工具,服务与构建.使用Maven配置好项目后,输入简单的命令,如:mvn clean install,Maven会帮我们处理那些繁琐的任务.

Maven是跨平台的.

Maven最大化的消除了构建的重复.

Maven可以帮助我们标准化构建过程.所有的项目都是简单一致的,简化了学习成本.

总之,Maven作为一个构建工具,不仅帮我们自动化构建,还能抽象构建过程,提供构建任务实现.他跨平台,对外提供一致的操作接口,这一切足以使他成为优秀的,流行的构建工具.

但是Maven不仅是构建工具,他还是一个依赖管理工具和项目信息管理工具.他还提供了中央仓库,能帮我们自动下载构件.

使用Maven还能享受一个额外的好处,即Maven对于项目目录结构、测试用例命名方式等内容都有既定的规则,只要遵循了这些成熟的规则,用户在项目间切换的时候就免去了额外的学习成本,可以说是约定优于配置(Convention Over Configuration)。

2.对比,Maven,IDE,Mark,Ant

a.IDE:基本上所有的主流IDE都集成了Maven,我们可以在IDE中方便的运行Mave执行构建.IDE依赖大量的手工操作。编译、测试、代码生成等工作都是相互独立的,很难一键完成所有工作。手工劳动往往意味着低效,意味着容易出错很难在项目中统一所有的IDE配置,每个人都有自己的喜好。也正是由于这个原因,一个在机器A上可以成功运行的任务,到了机器B的IDE中可能就会失败。

所以,要合理使用IDE,不过多依赖.Maven是专家.

b.Make也许是最早的构建工具,具体不详,没用过,可以不了解.Make的强大之处在于它可以利用所有系统的本地命令,尤其是UNIX/Linux系统,丰富的功能、强大的命令能够帮助Make快速高效地完成任务。

但是,Make将自己和操作系统绑定在一起了。也就是说,使用Make,就不能实现(至少很难)跨平台的构建,这对于Java来说是非常不友好的。此外,Makefile的语法也成问题,很多人抱怨Make构建失败的原因往往是一个难以发现的空格或Tab使用错误。

c.Ant是意指“另一个整洁的工具”(Another Neat Tool),它最早用来构建著名的Tomcat,其作者James Duncan Davidson创作它的动机就是因为受不了Makefile的语法格式。我们可以将Ant看成是一个Java版本的Make,也正因为使用了Java,Ant是跨平台的。此外,Ant使用XML定义构建脚本,相对于Makefile来说,这也更加友好。

和Make一样,Ant也都是过程式的,开发者显式地指定每一个目标,以及完成该目标所需要执行的任务。针对每一个项目,开发者都需要重新编写这一过程,这里其实隐含着很大的重复。Maven是声明式的,项目构建过程和过程各个阶段所需的工作都由插件实现,并且大部分插件都是现成的,开发者只需要声明项目的基本元素,Maven就执行内置的、完整的构建过程。这在很大程度上消除了重复。

Ant是没有依赖管理的,所以很长一段时间Ant用户都不得不手工管理依赖,这是一个令人头疼的问题。幸运的是,Ant用户现在可以借助Ivy管理依赖。而对于Maven用户来说,依赖管理是理所当然的,Maven不仅内置了依赖管理,更有一个可能拥有全世界最多Java开源软件包的中央仓库,Maven用户无须进行任何配置就可以直接享用。

3.Maven与极限编程

极限编程(XP)是近些年在软件行业红得发紫的敏捷开发方法,它强调拥抱变化。

首先看一下Maven如何帮助XP团队实现一些核心价值:

?简单。Maven暴露了一组一致、简洁的操作接口,能帮助团队成员从原来的高度自定义的、复杂的构建系统中解脱出来,使用Maven现有的成熟的、稳定的组件也能简化构建系统的复杂度。

?交流与反馈。与版本控制系统结合后,所有人都能执行最新的构建并快速得到反馈。此外,自动生成的项目报告也能帮助成员了解项目的状态,促进团队的交流。

Maven几乎能够很好地支持任何软件开发方法。

例如,在传统的瀑布模型开发中,项目依次要经历需求开发、分析、设计、编码、测试和集成发布阶段。从设计和编码阶段开始,就可以使用Maven来建立项目的构建系统。在设计阶段,也完全可以针对设计开发测试用例,然后再编写代码来满足这些测试用例。然而,有了自动化构建系统,我们可以节省很多手动的测试时间。此外,尽早地使用构建系统集成团队的代码,对项目也是百利而无一害。最后,Maven还能帮助我们快速地发布项目。

解决方案

从初学者使用者的角度你可以把他看成可以告别set classpath, javac 这些刀耕火种命令的利器。

作为理解,不太准确的可以说maven主要是用来解决导入java类依赖的jar,编译java项目主要问题。(最早手动导入jar,使用Ant之类的编译java项目)

以pom.xml文件中dependency属性管理依赖的jar包,而jar包包含class文件和一些必要的资源文件。

当然它可以构建项目,管理依赖,生成一些简单的单元测试报告,像现在公司的持续集成都广泛的使用maven,

当你接触一些项目以后你就会有更深的体会。

解决方案二:

比如之前项目导入jar。是通过copy方式导入项目中,而且还会存在jar之间的依赖和冲突。而maven解决了这些问题,只是网速不好的时候有点麻烦。只需要下载-bin.zip就可以了。md5是加密,src是包含了源文件。其他我也不是很清楚=。=

解决方案三:

jar 包管理,防止jar之间依赖起冲突 。小组之间建立个私服务,大家都用通用 的maven配置文件,不用自己手动去下载jar ,pom文件会自动管理下载好的

jar包。

解决方案四:

Maven是基于项目对象模型,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。例如:项目开发中第三方jar引用的问题,开发过程中合作成员引用的jar版本可能不同,还有可能重复引用相同jar的不同版本,使用maven关联jar就可以配置引用jar的版本,避免冲突。

你给出的图片中binary是二进制文件,source是源码,开发中我们需要下载的是binary文件,后缀标识压缩的算法. 一般来说,windows系统用zip较多,linux系统用tar.gz较多。source是maven项目的源码,探究原理时可以下载源码进行研究。

Java项目的maven是做什么的?

maven是一个项目构建和管理的工具,提供了帮助管理 构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。

maven的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性。利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。

下面将进行简要介绍:

1.安装

Maven是一个Java工具,所以你必须安装Java环境。首先,下载Maven并解压到你选择的安装目录,例如在windows下的C:\maven,或者Linux下的/usr/local/maven。然后添加系统变量$M2_HOME和M2_HOME/bin到你的系统路径。在终端或者命令提示里输入以下指令:

mvn --version

这应该打印你安装的Maven的版本,例如:

Maven version: 2.0.10

Java version: 1.6.0_12

OS name: "windows xp" version: "5.1" arch: "x86"
Family: "windows"

2 下载所需插件

然后,在终端或者命令提示里输入以下指令:

mvn

这时,系统会下载maven运行所需的.jar文件到自动生成的默认路径为

C:\Documents and Settings\Administrator\.m2\repository的文件夹中。

这个过程大概需要十几分钟。

3 创建一个项目

在命令行执行以下指令:

mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app

将注意到此命令在当前目录创建了一个名为my-app的目录。

src/main/java目录包含项目源代码,src/test/java目录包含测试代码,而pom.xml为项目的Project Object Model,或者POM。

4 配置eclipse的classpath

eclipse需要知道Maven的本地仓库的路径。所以,类路径变量M2_REPO必须设置。在eclipse内定义一个新的classpath变量:从菜单条,选择Window>Preferences,选择java>Build Path>Classpath>Variables中添加名为MAVEN_REPO的变量,指向C:\Documents and
Settings\Administrator\.m2\repository。如果想让eclipse支持直接运行maven的goal,可以安装mavenide插件。

5 如果有一个单模块的简单java项目,使用eclipse将十分简单。为了从POM产生eclipse项目文件,执行以下命令:

cd my-app

mvn eclipse:eclipse

如果已经使用eclipse创建或者检出了项目,只需在workspace中刷新项目。否则,必须将项目导入eclipse工作空间(从菜单条选择File>Import>Existing
Projects into Workspace)。

项目管理软件Maven是用Jelly作为自己的脚本语言,因此在编写自己的Goal时,需要了解一些Jelly的基本知识.

在Maven中,还有一些配置文件,如:project.xml,maven.xml,project.properties等.project.xml是项目的主配置文件,没有该文件Maven是不能执行的.文件中包含的属性,元素可以参考它的xsd文件.

一般在make java app时,都会应用很多其它的jar文件,在Maven中它提供了Repository,在这里它存有很多的jar文件.当然,在Repository中也存有Maven执行的一些类库文件.

如果,你第一次运行Maven时,它会从网上的Repository下载需要的类库.如果此时,网络是断的,就不行了.

运行Maven的site:generate,可以生成一个关于项目信息和项目报告的网站,所有的页面都是html格式的.其中,包含非常丰富的项目信息:项目组成员,邮件列表,单元测试,javadoc等等.这样,就可以让人能大致把握住项目的概括.

试试吧,你会喜欢它的!

时间: 2024-10-11 08:49:49

Maven 是干什么的,为什么要用【整理】的相关文章

jdk tomcat maven svn plsql客户端 环境变量配置整理

1 jdk 新建: 1.JAVA_HOME   -----  C:\Program Files\Java\jdk1.7.0 2.CLASSPATH  ------   .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 3.打开PATH添加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 备注: 1,.表示当前路径,%JAVA_HOME%就是引用前面指定的JAVA_HOME: 2,JAVA_HOME指明JDK安装路径,此路径

maven是干什么的?

最近在研究后台相关的东西,虽然前端还不是很了解吧~但是计算机一年没写后台代码,我快废掉了呀~emmmmm....他们老是和我说maven,恩恩,那就看看到底是啥?从大神聚集的知乎上拉了一篇过来~存档: 作者:郭无心链接:https://www.zhihu.com/question/20104186/answer/73797359来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. http://suhuanzheng7784877.iteye.com/blog/1066

搭建一个Maven - Spring - Spring MVC - Mybatis - MySSQ 整合SSM框架

1 数据库的准备 我本地没有Mysql,完全参考http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html安装了一个. 2 本地安装Maven 首先,Maven是干什么的?我学习的博客里说觉得Maven就是管理jar包的,在这之前我们要辛苦的去找jar包,同时还要担心版本不匹配等问题,有了Maven,他可以帮我们管理你所需要的jar包.我觉得这个解释很容易理解,官方的说法是Maven是一个项目管理和构建自动化工具.我们比较关心他的

跟着刚哥深入学maven

前言:目前所有的项目都在使用maven,可是一直没有时间去整理学习,这两天正好有时间,好好的整理一下. 一.为什么使用Maven这样的构建工具[why] ① 一个项目就是一个工程 如果项目非常庞大,就不适合使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作. 借助于maven就可以将一个项目拆分成多个工程 ② 项目中使用jar包,需要“复制”.“粘贴”项目的lib中 同样的jar包重复的出现在不同的项目工程中,你需要做不停的复制粘贴的重复工作. 借助于maven,可以将ja

Maven入门详解以及Eclisp的集成

1.首先要安装Maven到操作系统上 Maven的下载页面:http://maven.apache.org/download.html Maven跟Tomcat很像,下载下来后直接解压在指定的目录就安装成功了,不过Maven比Tomcat多了一项环境变量配置 当前版本3.0.3.解压缩下载的文件, 首先创建一个系统变量M2HOME,变量值指向maven的解压目录,如图所示: 将其中的bin目录设置到windows Path环境变量中.就是把%M2HOME%\bin加到path系统变量中,如图所示

学maven

跟着刚哥深入学maven 前言:目前所有的项目都在使用maven,可是一直没有时间去整理学习,这两天正好有时间,好好的整理一下. 一.为什么使用Maven这样的构建工具[why] ① 一个项目就是一个工程 如果项目非常庞大,就不适合使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作. 借助于maven就可以将一个项目拆分成多个工程 ② 项目中使用jar包,需要"复制"."粘贴"项目的lib中 同样的jar包重复的出现在不同的项目工程中,你需要做

设计原本 --- 需求、罪念以及合同

任何在项目伊始就规划所有的可能需求之企图都会落败,并以客观的延误告终.-Pahl,Beitz <Engineering Design> 关于需求: 项目伊始,有多少需求是有技术人员参与的?有多少需求是市场人员提供的?... 现实中,大部分此类需求只是客户那边的管理层,各自为阵提出自己的想法.而这些想法很多只是为了表明自己分量,现实自己工作多么重要,这是我亲身体验? 当年我作为客户方的代理人(甲方),领导说要搞信息化,然后下面的部门就忙乎起来,各自罗列自己的需求,倒也很认真(不认真会丢饭碗的,呵

使用IDEA搭建SSM框架

前言: [关于SSM的框架,以后再做整理] [学习性文章,本文长期更新,如有错误,感激指正,并会及时更正与回答,谢谢] 正文: 1.开发环境的配置[以后再做整理] 2.IDEA上创建MAVEN WEB框架[以后再做整理] 3.搭建SSM框架 ssm框架的搭建过程,实际是spring.spring-MVC.mybatis三个JAVA开源框架的整合过程.这里涉及到[利用maven整合框架,合并项目]的学习,[以后再做整理]. step1:maven引入需要的jar包 关于pom.xml文件的内容的组

Maven使用常见问题整理

Maven使用常见问题整理  1.更新eclipse的classpath加入新依赖  1.在dependencyManagement里面加入包括版本在内的依赖信息,如:   <dependency>    <groupId>joda-time</groupId>    <artifactId>joda-time</artifactId>    <version>1.6.2</version>   </dependen