- Maven是什么?
Maven: 中文翻译,"专家"。基本上有两个用途
一是构建工具, 用来把源代码构建成可发布的构件。类似于ant;
另外一个是项目管理工具。
官方给出的定义是:
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(ProjectLifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。 - Maven中的关键词
Project : 任何您想build的事物,Maven都可以认为它们是工程。这些工程被定义为工程对象模型(POM,Poject Object Model)。一个工程可以依赖其它的工程;一个工程也可以由多个子工程构成。
POM:POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元数据文件,类似于Ant中的build.xml文件。POM文件位于每个工程的根目录中。
GroupId:groupId是一个工程的在全局中唯一的标识符,一般地,它就是工程名。groupId有利于使用一个完全的包名,将一个工程从其它有类似名称的工程里区别出来。
Dependency:为了能够build或运行,一个典型的Java工程会依赖其它的包。在Maven中,这些被依赖的包就被称为dependency。dependency一般是其它工程的artifact。
Plug-in:Maven是由插件组织的,它的每一个功能都是由插件提供的。插件提供goal(类似于Ant中的target),并根据在POM中找到的元数据去完成工作。主要的Maven插件要是由Java写成的,但它也支持用Beanshell或Ant脚本写成的插件。
Repository:仓库用于存放artifact,它可以是本地仓库,也可以是远程仓库。Maven有一个默认的远程仓库--central,可以从http://www.ibiblio.org/maven2/下载其中的artifact。在Windows平台上,本地仓库的默认地址是User_Home\.m2\repository。
Snapshot:工程中可以(也应该)有一个特殊版本,它的版本号包括SNAPSHOT字样。该版本可以告诉Maven,该工程正处于开发阶段,会经常更新(但还未发布)。当其它工程使用此类型版本的artifact时,Maven会在仓库中寻找该artifact的最新版本,并自动下载、使用该最新版。 - Maven 下载安装(Windows)
http://maven.apache.org/download.html
下载最新版本 Maven 3.0.4 (Binary zip)
解压到D: 盘.(因为Maven是基于java的, 所以必须先安装JDK并设置了 JAVA_HOME变量。)
新增以下环境变量-
MAVEN_HOME : D:\apache-maven-3.0.2
MAVEN : %MAVEN_HOME%\bin
(可选) MAVEN_OPTS : -Xms256m -Xmx512m在path 前面 加上 %MAVEN%;
到此, 安装完成。
可以在命令行输入: mvn -version 。 来验证安装是否成功。 - Maven入门实例
1) 新建项目my-app.
首先使用cd 切换到放置项目的路径,然后在命令行敲入
mvn archetype:create -DgroupId=com.tootuu.app -DartifactId=my-app
如果是首次运行这个命令, 这个命令的运行时间会比较长, 因为会下载一些最新的工具包(artifacts)到你的本地仓库(User_Home\.m2\repository)
命令执行完成,会生成一个 my-app的目录。(改该目录下有一个pom.xml文件和一个src的文件夹。src/main/java 目录包含了项目的源代码,src/test/java 目录包含了项目的测试代码 自动生成com.tootuu.app.App.java的一个Hello world的测试文件)
2) 编译打包mvn package
执行完成后, 在my-app目录下会生成target 目录, 里面有产生的my-app-1.0-SNAPSHOT.jar 打包档。
3) 接下来就可以使用Java 命令来运行这个jar档了java -cp target/my-app-1.0-SNAPSHOT.jar com.tootuu.app.App
打印出 "Hello World!"
- 常用命令。(mvn XXX)
mvn archetype:create :创建 Maven 项目
validate:验证工程是否正确,所有需要的资源是否可用。
compile:编译项目的源代码。
test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
Package:把已编译的代码打包成可发布的格式,比如jar。
integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
verify:运行所有检查,验证包是否有效且达到质量标准。
install:把包安装在本地的repository中,可以被其他工程作为依赖来使用。
Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
clean:清除先前构建的artifacts(在maven中,把由项目生成的包都叫作artifact)。
site:为项目生成文档站点。 - 参考资源
[1]Maven官方网站. http://maven.apache.org
[2]Maven POM文件参考结构. http://maven.apache.org/ref/current/maven-model/maven.html
[3]Super POM. http://maven.apache.org/guides/introduction/introduction-to-the-pom.html
[4]Maven主要插件的列表. http://maven.apache.org/plugins
[5]Maven基本使用指南. http://maven.apache.org/guides/index.html
[6]Better Build with Maven. http://www.mergere.com/m2book_download.jsp -- 强烈推荐
[7]介绍Maven2. http://www.javaworld.com/javaworld/jw-12-2005 /jw-1205-maven_p.html
[8]揭秘Maven2 POM. http://www.javaworld.com/javaworld/jw-05-2006/jw-0529-maven.html
[9]Maven让事情变得简单. http://www-128.ibm.com/developerworks/cn/java/j-maven
[10]Maven文档集. http://docs.codehaus.org/display/MAVENUSER/Home
[11]有效利用Maven2的站点生成功能. http://www.matrix.org.cn/resource/article/44/44491_Maven2.html
文中例子程序下载:http://www.blogjava.net/files/jiangshachina/maven.rar