Maven简介与简单使用

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具

Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。 [1]

特点

编辑

那么,Maven 和 Ant 有什么不同呢?在回答这个问题以前,首先要强调一点:Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven 和 Ant代表两个差异很大的工具,所以接下来只说明这两个工具的等同组件之间的区别,如表 1 所示。[1]

   Maven Ant
标准构建文件 project.xml 和 maven.xml
  
build.xml
特性处理顺序
${maven.home}/bin/driver.properties

${project.home}/project.properties

${project.home}/build.properties

${user.home}/build.properties

通过 -D 命令行选项定义的系统特性

最后一个定义起决定作用。


通过 -D 命令行选项定义的系统特性

由 任务装入的特性

第一个定义最先被处理。

构建规则 构建规则更为动态(类似于编程语言);它们是基于 Jelly 的可执行 XML。 构建规则或多或少是静态的,除非使用<script>任务
扩展语言
  
插件是用 Jelly(XML)编写的。 插件是用 Java 语言编写的。
构建规则可扩展性 通过定义 <preGoal> 和 <postGoal> 使构建 goal 可扩展。 构建规则不易扩展;可通过使用 <script> 任务模拟 <preGoal> 和 <postGoal> 所起的作用。

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。

此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。

常用命令

编辑

mvn archetype:create 创建Maven项目

mvn compile 编译源代码

mvn deploy 发布项目

mvn test-compile 编译测试源代码

mvn test 运行应用程序中的单元测试

mvn site 生成项目相关信息的网站

mvn clean 清除项目目录中的生成结果

mvn package 根据项目生成的jar

mvn install 在本地Repository中安装jar

mvn eclipse:eclipse 生成eclipse项目文件

mvnjetty:run 启动jetty服务

mvntomcat:run 启动tomcat服务

mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳过测试类

推荐书籍

编辑

发文时中文版对maven介绍比较全的书籍是《Maven实战》

Win7配置

编辑

首先要安装Jdk1.6 和Myeclipse7.5 。

1. Maven有一个重要的文件"settings.xml“,这个文件来源于apache-maven-2.0.8/conf/ 下,要放在window下, Win7和Winxp还是有点不一样 , Win7 ---C:\Users\用户名\.m2 , Winxp ---C:\Documents and Settings\用户名\.m2 。

2. 设置Maven的环境变量,基本上和设置Jdk环境变量相似,首先设置MAVEN_HOME,再加入Path 。

3. 修改”settings.xml” 文件,在这个文件中找到<localRepository>d:/work</localRepository>这一行,进行修改。这一行代表了Maven的Jar包仓库的位置。work下放的都是项目所用到的jar包,每个Project都可以共用一个work。

4. Myeclipse7.5及以上版本本身自带Maven插件。如果使用低版本的Myeclipse需要安装插件,在help菜单中选择software updates,选择find and install,选择search for new features to install-选择new remote site。写入 name:maven URL:http:// m2eclipse.codehaus . org/update/去下载相关jar包和插件。

5. 在Myeclipse中windows-perferences中,在下图的位置上,查看users settings的路径是否正确。

6. 建立Maven的project,File--new—other—Java Maven Project。

7. 然后打开project里pom.xml文件,


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<projectxmlns="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.0http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>maventest</groupId>

<artifactId>maventest</artifactId>

<packaging>jar</packaging>

<version>0.0.1-SNAPSHOT</version>

<name>MavenQuickStartArchetype</name>

<url>http://maven.apache.org</url>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>3.8.1</version>

<scope>test</scope>

</dependency>

</dependencies>

</project>

在这xml文件中添加Maven所依赖的Jar的名称,也就是添加<dependency></dependency>节点。

例如:添加大家常用的Struts Jar包


1

2

3

4

5

<dependency>

<groupId>org.apache.struts</groupId>

<artifactId>struts2-core</artifactId>

<version>2.0.11</version>

</dependency>

8. 到发文时为止,环境就算搞定了。接下来要应用Maven来打包Project为大家服务的。

在cmd中的命令:

a. mvn eclipse:clean 清除Project中以前的编译的东西,重新再来

b. mvn eclipse:eclipse 开始编译Maven的Project

在Myeclipse中的操作:

a. 选中Maven Project 右击 在Run As中选择Maven clean

b. 在Myeclipse中,Project—Clean 开始编译

c. 选中Maven Project 右击 在Run As中选择Maven install

执行完这几步,如果没发生异常,会在project里生成一个target文件夹,这个文件夹里的东西,就是Maven打包发布的东西。

生命周期

编辑

Maven的生命周期是为了对所有的构建过程进行了抽象了,便于统一。

clean(清理)

cleanup(清理所有)

此生命周期旨在给工程做清理工作,它主要包含以下阶段:

pre-clean - 执行项目清理前所需要的工作。

clean - 清理上一次build项目生成的文件。

post-clean - 执行完成项目清理所需的工作.

default(默认)

validate - 验证项目是否正确且所有必要的信息都可用。

initialize - 初始化构建工作,如:设置参数,创建目录等。

generate-sources - 为包含在编译范围内的代码生成源代码.

process-sources - 处理源代码, 如过滤值.

generate-resources -

process-resources - 复制并处理资源文件,至目标目录,准备打包。

compile - 编译项目中的源代码.

process-classes - 为编译生成的文件做后期工作, 例如做Java类的字节码增强.

generate-test-sources - 为编译内容生成测试源代码.

process-test-sources - 处理测试源代码。

generate-test-resources -

process-test-resources - 复制并处理资源文件,至目标测试目录。

test-compile - 将需测试源代码编译到路径。一般来说,是编译/src/test/java目录下的java文件至目标输出的测试classpath目录中。

process-test-classes -

test - 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。

prepare-package -

package - 接受编译好的代码,打包成可发布的格式,如 JAR 。

pre-integration-test -

integration-test - 按需求将发布包部署到运行环境。

post-integration-test -

verify -

install -将包安装到本地仓库,给其他本地引用提供依赖。

deploy -完成集成和发布工作,将最终包复制到远程仓库以便分享给其他开发人员。

site(站点)

pre-site - 执行一些生成项目站点前的准备工作。

site - 生成项目站点的文档。

post-site - 执行需完成站点生成的工作,如站点部署的准备工作。

site-deploy - 向制定的web服务器部署站点生成文件。[2]

Maven生命周期参考:Apache Maven Project[2]  ,书籍《Maven In Action》

时间: 2024-08-14 15:03:15

Maven简介与简单使用的相关文章

(一)《Maven实战》读书笔记 —— Maven简介

原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/flyingweb/p/8478044.html 第一章:Maven简介 一.何为Maven? Maven这个词可以翻译为"知识的积累",本书将介绍Maven这一跨平台的项目管理工具.作为Apache组织中的一个颇为成功的开源项目,Maven主要服务于基于Java平台的项目构建.依赖管理和项目信息管理. (一)Maven是优秀的--项目构建工具 要理解何为Maven,首先得理解何为构建.构建是我们每一

实时计算,流数据处理系统简介与简单分析

转自:http://www.csdn.net/article/2014-06-12/2820196-Storm 摘要:实时计算一般都是针对海量数据进行的,一般要求为秒级.实时计算主要分为两块:数据的实时入库.数据的实时计算.今天这篇文章详细介绍了实时计算,流数据处理系统简介与简单分析. 编者按:互联网领域的实时计算一般都是针对海量数据进行的,除了像非实时计算的需求(如计算结果准确)以外,实时计算最重要的一个需求是能够实时响应计算结果,一般要求为秒级.实时计算的今天,业界都没有一个准确的定义,什么

特殊权限简介(简单的理解)

特殊权限: suid:运行程序时,相应的进程的属主是程序文件自身的属主,而不是启动者. chmod u+s(u-s) file sgid:运行某个程序时,对应进程的属组是程序文件自身的属组,而不是启动者的所属的基本组.(常常与sticky一起使用,控制公共文件,组人能修改所有文件不能删除别人文件) chmod g+s(g-s) file sticky:在一个公共的目录中,每个人都可以创建文件,删除自己的文件,但不能删除别人的文件 chmod o+t filedir 特殊权限简介(简单的理解),布

Robot Framework-工具简介及简单使用

界面详解 Project.Suite页面 项目结构:整修项目中所有结构显示及相关引用文件的显示,树型结果展示.可选择针对部分TestCase进行执行 引用:添加外部引用包.资源.变量.失败帮助 参数:添加变量.数组 数据:使用TDD时,此处可添加一些测试引用数据 TestCase页面 设置区:主要用来配制此TestCase执行阶段的的操作 Documentation:说明,可添加TestCase的说明.上下文.参数说明.业务等.无内容限制 Setup:执行用例前可进行的一些设置,数据初始化.上下

C#可扩展编程之MEF学习笔记(一):MEF简介及简单的Demo

在文章开始之前,首先简单介绍一下什么是MEF,MEF,全称Managed Extensibility Framework(托管可扩展框架).单从名字我们不难发现:MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF有这样一段说明: Managed Extensibility Framework 或 MEF 是一个用于创建可扩展的轻型应用程序的库. 应用程序开发人员可利用该库发现并使用扩展,而无需进行配置. 扩展开发人员还可以利用该库轻松地封装代码,避免生成脆弱的硬依赖项. 通过 MEF,不

knockout.js的简介和简单使用

1.knockout简介knockout是一个轻量级的UI类库,通过MVVM模式使JavaScript前端UI简单化knockout有四大重要概念:1)声明式绑定:使用简明移读的语法很容易地将模型(model)数据关联到dom元素上.2)UI界面自动刷新:当宁的模型状态(model state)改变时,您的UI将自动更新3)依赖跟踪:为转变和联合数据,在你的模型数据之间隐式建立关系4)模板:为你的模型数据快速编写复杂的可嵌套的UI 2.knockout特性和好处特性:优雅的依赖跟踪声明式绑定灵活

NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装

一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题: (1)对数据库高并发读写的需求 网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求.关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求

第一章 Maven简介

为什么使用Maven? IDE?Eclipse? ? 手工操作较多,编译.测试.部署等工作都是独立的,很难一步完成 ? 每个人的IDE配置都不同,很容易出现本地代码换个地方编译就出错 Ant? ?没有一个约定的目录结构 ? 必须明确让ant做什么,什么时候做,然后编译,打包 ? 没有生命周期,必须定义目标及其实现的任务序列 没有集成依赖管理 MAVEN? ? 拥有约定,知道你的代码在哪里,放到哪里去 ? 拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程

00.Maven简介

maven简介 什么是maven? maven是一个项目管理和构建自动化工具. maven采用纯Java编写.采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,maven可以管理项目的整个声明周期,包括编译,构建,测试,发布,报告等等. maven将自己定位为一个项目管理工具.它负责管理项目开发过程中的几乎所有的东西: 版本 maven有自己的版本定义和规则 构建 maven支持许多种的应