1 关键名词Project:任何您想build的事物,Maven都可以认为它们是工程。这些工程被定义为工程对象模型(POM,Poject Object Model)。一个工程可以依靠其它的工程;一个工程也可以由多个子工程构成。
POM:POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元数据文件,类似于Ant中的build.xml文件。POM文件位于每个工程的根目录中。
GroupId:groupId是一个工程的在全局中唯一的标识符,一般地,它就是工程名。groupId有利于使用一个完全的包名,将一个工程从其它有类似名称的工程里区别出来。
Artifact:artifact 是工程将要产生或需要使用的文件,它可以是jar文件,源文件,二进制文件,war文件,甚至是pom文件。每个artifact都由groupId和 artifactId组合的标识符唯一识别。需要被使用(依靠)的artifact都要放在仓库(见Repository)中,否则Maven无法找到 (识别)它们。
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/maven/其中的artifact.在Windows平台上,本地仓库的默认地址是User_Home“.m2“repository. Snapshot:工程中可以(也应该)有一个非凡版本,它的版本号包括SNAPSHOT字样。该版本可以告诉Maven,该工程正处于开发阶段,会经常更新(但还未发布)。当其它工程使用此类型版本的artifact时,Maven会在仓库中寻找该artifact的最新版本,并自动、使用该最新版。
2 Maven Build Life Cycle软件项目一般都有相似的开发过程:预备,编译,测试,打包和部署,Maven将上述过程称为Build Life Cycle.在Maven中,这些生命周期由一系列的短语组成,每个短语对应着一个(或多个)操作;或对应着一个(或多个)goal(类似于Ant中的 target)。
如编译源文件的命令mvn compile中的compile是一个生命周期短语。同时该命令也可以等价于mvn compiler:compile,其中的compiler是一个插件,它提供了compile(此compile与mvn compile中的compile意义不同)goal;compiler还可提供另一个goal——testCompile,该goal用于编译junit测试类。 在执行某一个生命周期时,Maven会首先执行该生命周期之前的其它周期。如要执行compile,那么将首先执行validate,generate- source,process-source和generate-resources,最后再执行compile本身。
1.1. Maven的基本功能
构建:比如生成class、jar、war或者ear文件 生成文档:比如生成javadoc、网站文档 生成报告:比如junit测试报告
生成依赖类库:生成文档,说明项目多其他软件的依赖
有关SCM:SCM(Software Configuration Management),软件配置管理,比如版本控制,比如bug管理等等
发布:生成供发布的分发包,比如生成Struts2的分发包,供提交给用户使用 部署:比如,web应用程序,自动部署到指定的服务器上 通过我写的商品管理的小例子,演示结合maven和svn的功能。
2. Maven使用
2.1. Maven的安装和配置
从官方网站下载最新的Maven分发包http://maven.apache.org/download.html,当前为2.0.9;
解压缩到本地;
配置maven, 将maven/bin目录设置到windows环境变量Path中 检查maven是否安装成功, 在命令行中执行 mvn -version
2.2. Maven的基本使用
Maven的基本使用介绍通过命令行编写简单的java和web项目。
2.2.1. 实现Java项目
通过maven在命令行下创建普通java项目,也就是main方法执行的项目或者jar文件的类库。
2.2.1.1. 创建Maven项目 执行:
mvn archetype:generate
在交互界面中:
Choose a number: 回车即可,也就是选择15
Define value for groupId: 输入组织id,比如easymorse.com Define value for artifactId:输入项目名称,比如helloworld
Define value for version: 输入版本号,可以直接回车,默认是1.0-SNAPSHOT Define value for package: java的包名,比如com.easymorse 然后回车表示确认上述输入即可。
观察helloworld目录(Define value for artifactId输入的项目名称)下生成的文件和目录:
项目构建文件: pom.xml
代码框架: src\\main\\java\\com\\easymorse\\App.java 测试代码: src\\test\\java\\com\\easymorse\\AppTest.java
2.2.1.2. 运行Maven项目
命令行进入helloworld目录Define value for artifactId输入的项目名称)。
项目打包
mvn package
检查命令生成了什么?
target目录 编译了代码 编译了测试代码
使用junit测试并生成的报告 生成代码的jar文件 运行打包的jar文件:
java -cp target\\helloworld-1.0-SNAPSHOT.jar com.easymorse.App
编译源程序
mvn compile
编译并测试
mvn test
清空生成的文件
mvn clean
将maven项目转化为eclipse项目
命令行运行:
mvn eclipse:eclipse
打开eclipse,菜单选择:file>import>general>existing projects into workspace,在对话框中选中目录,导入即可。
如果要清除有关eclipse项目的配置信息:
mvn -Dwtpversion=1.0 eclipse:clean
联合使用
相关推荐: