Maven
大家应该都知道Maven是一种Java技术,是Ant的进化,并且在Java社区中引发了一场变革。Maven提供了一套软件项目管理的综合性方案.无论是编译,发布,文档还是团队协作,Maven提供了必要的抽象,它鼓励重用,并做了除了软件构建以外的许多工作.
然而,究竟Maven是什么?它就是一个工具么?
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,你就会奇怪以前没有它是怎么做的开发。
----------------准备工作-------------
Jdk 1.5以上java开发环境。
Eclipse IDE 一个。
Maven 下载地址: http://www.apache.org/
----//快速搭建步骤
第一步:配置maven环境
将下载文件解压,然后设置maven环境
如果你配置过jdk的话,这里对你应该不难。如我的maven环境为:F:\maven\apache-maven-3.0.3
我的电脑-----属性----高级-----环境变量-----环境变量-----新建
变量名:M2_HOME
变量值:F:\maven\apache-maven-3.0.3
找到path
在环境变量值尾部加入:;%M2_HOME%\bin;---前面注意分号
当然,你也可以直接在path 路径下加入:;F:\maven\apache-maven-3.0.3\bin 只是上面的方式更优雅一点。
我新建立
打开命令提示符(开始---运行---cmd),检查我们的java环境和maven环境是否有误。

第二步:修改仓库位置
修改我们仓库地址,仓库用于存放我们项目所依赖的所有jar包。
我的仓库路径:F:\maven\repo----这个路径是我自己创建,你可以将路径创建在任何位置。
我们打开…\apache-maven-3.0.3\conf\目录下的setting.xml文件,设置成我们创建的仓库路径

下面我们用一个命令验证一下。打开命令提示符,输入:mvn help:system
该命令会打印出所有的java系统属性和环境变量。这些信息对我们日常的编程工作很有帮且。
如果运行的过程中没有错误,打开我们仓库(F:\maven\repo)会发现里面多了一些文件。这些文件就是我们从maven的中央仓库下载到本地仓库的。
第三步:创建maven项目
创建一个我们自己的项目。
我们通过maven命令行方式创建一个项目

mvn archetype:create -DgroupId=com.chongshi.test -DartifactId=hello -DpackageName=com.chongshi.test -Dversion=1.0
因为是第一次构建项目,所有依赖的jar包都要从maven的中央仓库下载,所以需要时间等待。等以后我们的本地仓库中积累了我们常用的jar包后,我们的开发将变得非常规范和方便。^_^!!
借助下载jar包的时间,我们来了解一下pom.xml文件。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.chongshi.test</groupId>
<artifactId>hello</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>hello</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Ø project:pom.xml文件中的顶层元素;
Ø modelVersion:指明POM使用的对象模型的版本。这个值很少改动。
Ø groupId:指明创建项目的组织或者小组的唯一标识。GroupId是项目的关键标识,典型的,此标识以组织的完全限定名来定义。比如,org.apache.maven.plugins是所有Maven插件项目指定的groupId。
Ø artifactId:指明此项目产生的主要产品的基本名称。项目的主要产品通常为一个JAR文件。第二,象源代码包通常使用artifactId作为最后名称的一部分。典型的产品名称使用这个格式: <artifactId>- <version>. <extension>(比如:myapp-1.0.jar)。
Ø version:项目产品的版本号。Maven帮助你管理版本,可以经常看到SNAPSHOT这个版本,表明项目处于开发阶段。
Ø name:项目的显示名称,通常用于maven产生的文档中。
Ø url:指定项目站点,通常用于maven产生的文档中。
Ø description:描述此项目,通常用于maven产生的文档中。
对于一个项目中只有下面的一部分是是我们需要关注的:
<groupId>com.chongshi.test</groupId>
<artifactId>hello</artifactId>
<version>1.0</version>
第四步:编译项目代码
我们的项目已经创建完成。但我们点开目录发现,它并不是我们eclipse所需要的项目目录格式。我们需要把它构建成我们eclipse可以导入的项目。
在命令提示符下进入到我们的创建的项目目录(F:\maven\hello)下,执行:mvn clean compile

Clean 告诉maven清理输入出目录target/,compile告诉maven编译项目主代码。
不要急,我们又需要一段时间来下载,相关jar包。^_^!第一次用maven要学会淡定。
项目是编译完了,但项目的目录结构还不是我们想要的eclipse的项目结构,是不能导入到eclipse中的。所以,还需要执行一个命令:mvn eclipse:eclipse
命令执行完成后就得我们需要的项目目录了。
第五步:导入eclipse工具
打开的我们的eclipse工具。
先配置maven仓库路径
Window----Perferences-----java-----Build Path-----Classpath Variables
New一个变量的类路径。

Name :M2_REPO 注意这个名字必须要大写。
Path :F:/maven/repo 点击“Folder…”找到有本地仓库的位置。
下面,可以导入我的hello项目了。Eclipse如何导入项目,我这里就不说了,如果你是个java开发人员的话。
第六步:包的更新与下载
打开项目发现我们junit 是3.8.1的,有点老了。那我想换成4.7的,如何通过maven的方式更换呢。其实,很简单,打开我们项目下的的pom.xml文件。
……
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
……
更改变,junit的版本号,然后重新执行:mvn eclipse:eclipse
Maven 中央仓库地址:http://search.maven.org
假如,我们想下载一个struts 的jar包。在搜索框内搜索strruts ,会要列出中央仓库中的所有struts版本。
列表的格式与我们pom.xml配置文件的格式是对应的。

我们在pom.xml中加入:
<groupId>stuts</groupId>
<artifactId>struts-scripting</artifactId>
<version>1.0.1</version>
然后更新项目就可从中央仓库下载我们想要的任意jar包(必须是开源的包)
继续学习内容:
1. 如何创建一个web项目?
如果想让maven应用到项目开发中,这个是必须的。
2. 如何使用jeety?
maven提供的一个容器,类似于tomcat
3. 如何创建一个代理仓库?
如果是团队开发,这个很有必要,我们不可能每次都到中央仓库拿包,那样很慢,如果开发人员A已经下了某包,开发人员B还要下;创建代理仓库,A第一次下的包会存入代理仓库中,B要用时直接从代理仓库取就行。


浙公网安备 33010602011771号